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. “我爱淘”第二冲刺阶段Scrum站立会议4

    完成任务: 完成了首页中的推荐功能,推荐的是最近添加的需要卖的书,注册功能实现了它,可以对数据库进行添加. 计划任务: 在客户端实现分类功能,通过学院的分类查看书籍. 遇到问题: 分类功能,根据不同学 ...

  2. HDU 4747 Mex 递推/线段树

    题目链接: acm.hdu.edu.cn/showproblem.php?pid=4747 Mex Time Limit: 15000/5000 MS (Java/Others)Memory Limi ...

  3. dubbo源码分析1——负载均衡

    dubbo中涉及到的负载均衡算法只要有四种:Random LoadBalance(随机均衡算法).RoundRobin LoadBalance(权重轮循均衡算法).LeastAction LoadBa ...

  4. 读着读着《构建之法》(Build To Win) 越精神的白雪儿的思考

    哲学家的宗旨是:我思,故我在 科学家的宗旨是:我发现,故我在 工程师的宗旨是:我构建,故我在 ——<工程学--无尽的前沿> 序言:珍惜角色“人”,注重实践“物” <构建之法>, ...

  5. 【EF】EF Code-First数据迁移

    Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...

  6. 【bzoj3730】震波 动态点分治+线段树

    题目描述 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i].不幸的是,这片土地常常发生地震,并且随着时代的发展,城市 ...

  7. QT 选择对话框简单示例

    QT 选择对话框简单示例 部分代码: pDialog->addSeparator(); QAction *pmb2 = pDialog->addAction(QString::fromLo ...

  8. 给自己的小练习19-[kuangbin带你飞]专题九连通图

    没有写题解.补一波 Network of Schools 问题1:求有向图中入度为0的点个数 问题2:使得整个图变成一个联通分量 问题1直接缩点统计 问题2=max(入度为0的点,出度为0的点),注意 ...

  9. 【BZOJ1001】狼抓兔子(平面图转对偶图,最短路)

    [BZOJ1001]狼抓兔子(平面图转对偶图,最短路) 题面 BZOJ 洛谷 题解 这题用最小割可以直接做 今天再学习了一下平面图转对偶图的做法 大致的思路如下: 1.将源点到汇点中再补一条不与任何线 ...

  10. C中 ->运算符说明

    岁数大了,记忆力不好!这里记下,以后忘了来查! ->运算符. 访问结构中的成员 用 点“.”运算符 Ex: typedef struct st { char a; int b; } st; 定义 ...