1、原始字面值改善

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

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

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

//error:括号前面的字符串没有出现在括号后面
//std::string str = R"a(D:\A\B\test.txt)";
//std::cout << str << std::endl; //error:括号前后的字符串不匹配
//std::string str2 = R"a(D:\A\B\test.txt)b";
//std::cout << str 2<< std::endl; //ok
std::string str3 = R"(D:\A\B\test.txt)";
std::cout << str3 << std::endl; //ok
std::string str4 = R"test(D:\nC\\D\test.txt)test";
std::cout << str4 << std::endl;
//打印结果
D:\A\B\test.txt
D:\nC\\D\test.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 {};
};

C11关键字&字面值改善的更多相关文章

  1. Python3中 对local和nonlocal 关键字的改善认识(新手向)

    nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量. nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,如下实例: #!/usr/bi ...

  2. C11构造函数的改善

    1.委托构造函数 委托构造函数就是允许在同一个类中一个构造函数可以调用另一个构造函数,从而在初始化时简化变量的初始化. class CTest { public: int x; int y; int ...

  3. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  4. Python函数中参数类型

    在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...

  5. Java学习day03

    day03 课堂笔记 1.数据类型 2.总结第二章到目前为止所学内容: * 标识符 * 关键字 * 字面值 * 变量 成员变量如果没有赋值,系统会自动赋值,而局部变量不手动赋值,则会编译不通过. * ...

  6. 改代码不是很熟悉------方法上加入synchronized关键字,会有性能问题---如何改善

    package com.bjpowernode.t14; import java.time.Duration;import java.time.LocalTime; public class Proc ...

  7. 编写高质量代码改善C#程序的157个建议——建议40:使用event关键字为委托施加保护

    建议40:使用event关键字为委托施加保护 在建议中我们实现了一个具有通知功能的文件传输类,如下: class FileUploader { public delegate void FileUpl ...

  8. Java连载5-标识符、关键字和字面值

    一.标识符 1.标识符定义:在java源程序中凡是可以自己命名的单词 2.标识符可以标识什么元素? (1)类名(2)方法名(3)变量名(4)接口名(5)常量名 等等 3.标识符的命名要求 (1)一个合 ...

  9. Day01_07_Java关键字和字面值

    关键字 https://www.cnblogs.com/chenglc/p/6922834.html 字面值(所见即所得的数据) 10 100 3.14 'a' "abc" tur ...

随机推荐

  1. AOP:Spring的xml配置方式

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. java 基础 --Collection(Map)

    Map是不是集合?哈哈哈 java编程思想>的第11章,第216页,正数第13行,中原文:“……其中基本的类型是LIst.Set.Queue和Map.这些对象类型也称为集合类,但由于Java类库 ...

  3. webgl glsl

    GLSL是什么? GLSL是运行在GPU上的着色器语言 GLSL有自己的语法,跟js有些不同. GLSL是一个强类型的语言,所以在写着器语言时,必须要用强类型,强类型,强类型,强类型 GLSL是着色器 ...

  4. Android内存泄漏第一课【转】--------(使用单例模式造成的内存泄漏)

    使用单例模式造成的内存泄漏 Android的单例模式在我们项目开发中经常会用到,不过使用的不恰当的话也会造成内存泄漏.因为单例的静态特性使得单例的生命周期和应用的生命周期一样长, 这就说明了如果一个对 ...

  5. bzoj1211-树的计数

    题意 给出 \(n\) 和长度为 \(n\) 的数列 \(d\) 表示每个点的度数,问有多少颗满足要求的树. 分析 这题是prufer编码的应用. prufer编码是对一个带标号无根树的刻画,生成方式 ...

  6. 从原理上搞定编码(二)-- Web编码

    周末宅在家里睡完觉就吃饭,吃完饭接着睡觉,这日子过的实在是没劲啊.明明还有计划中的事情没有做, 为什么就是不想去做呢,这样的生活持续下去,必然会成为一个彻头彻尾的loser.上一篇写的 初识编码 ,这 ...

  7. Day22-CSRF跨站请求伪造

    csrf 跨站请求伪造 一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成. 1.1 第1次 ...

  8. 在虚拟机上安装linux系统

    1.安装linux服务器,内存4G,默认典型,next安装程序光盘影像文件,next选版本 2.6.x内核64位,next选择虚拟机位置(至少10G),next最大磁盘20G,选择单文件,next自定 ...

  9. 【题解】AC自动机题解合集

    最近貌似大家都在搞字符串?很长一段时间都没有写博客了……还是补一补坑吧. 感觉AC自动机真的非常优美了,通过在trie树上建立fail指针可以轻松解决多模匹配的问题.实际上在AC自动机上的匹配可以看做 ...

  10. BZOJ2716:[Violet 3]天使玩偶——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2716 样例输入 2 31 12 32 1 21 3 32 4 2 样例输出 1 2 ———————— ...