• 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 {};
    };
  • 相关阅读:
    微信扫码
    vue h5公众号支付
    vue h5支付宝支付
    vue PDF预览
    vue 中AES加密
    vue 动态路由配置
    移动端调试工具
    Ajax工作原理
    yahoo军规
    Flex 布局教程
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/7788945.html
Copyright © 2020-2023  润新知