• C11关键字&字面值改善


    1、原始字面值改善

      原始字面值可以直接表示字符串的实际含义,但是一些特殊字符就需要转义。

    std::string str = "D:AB	est.txt";
    std::cout << str << std::endl;
    //打印结果 D:AB est.txt

      那么这并不是我们想要的结果,C++中可以通过简单的方法可以改善这个问题。具体做法就是R"xxx(raw string)XXX",其中原始字符串必须用()括起来,口号的前后可以加其他字符串,所加的字符串是被忽略的,但是字符串必须在括号的前后出现。

    //error:括号前面的字符串没有出现在括号后面
    //std::string str = R"a(D:AB	est.txt)";
    //std::cout << str << std::endl;
    
    //error:括号前后的字符串不匹配
    //std::string str2 = R"a(D:AB	est.txt)b";
    //std::cout << str 2<< std::endl;
    
    //ok
    std::string str3 = R"(D:AB	est.txt)";
    std::cout << str3 << std::endl;
    
    //ok
    std::string str4 = R"test(D:
    C\D	est.txt)test";
    std::cout << str4 << std::endl;
    //打印结果
    D:AB	est.txt
    D:
    C\D	est.txt

    2、final和override关键字

    2.1 final关键字

      C++11中增加了final关键字来限制某个类不能被继承,或者某个虚函数不能被重写。

    struct A
    {
        //ok,foo函数不能被重写
        virtual void foo() final {};
    
        //error:非虚函数不能被修饰
        void bar() final{};
    };
    
    struct B  final: public A
    {
        //error:foo不能被重写
        void foo();
    };
    
    //error:B不能被继承
    struct C : public B
    {
    };

    2.2 override关键字

      override关键字确保在派生类中声明的重写函数与基类的虚函数有相同的签名,同事也明确表示将会重写基类的虚函数,还可以防止把重写基类的虚函数声明成重载。这样既可以保证重写虚函数的正确性,又可以提高代码的可读性。

    struct A
    {
        virtual void foo()  {};
    };
    
    struct B : public A
    {
        //显式重写
        void foo() override {};
    };
  • 相关阅读:
    kotlin 通过 下标比对
    textarea元素调整
    jquery给两个标签绑定一个事件
    开发过程中遇到的错误
    response.setHeader各种用法详解
    如何在eclipse里删除一个类 然后SVN服务器也同时删了这个类
    @pathvariable 与@requestparam 写rest接口时遇到的
    $.getJSON
    easyUI学习
    jQuery validator addMethod 动态提示信息
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/7788945.html
Copyright © 2020-2023  润新知