C++ 日日新

Robert C. Martin 曾说,衡量代码质量的唯一有效标准:WTF/min。即你 review 代码时每分钟内默念握草的次数。

今天又是塞翁失马焉知非福的一天。
花了大量的时间来找程序的错误,不知不觉中对业务代码的熟悉上了不止一个台阶。学到了几个 C++ 的语法知识。

1. enum 类

话不多说,先上个例子:

enum optype {INT, FLOAT, DOUBLE, BOOL};

格式说明:

  • 关键字enum——指明其后的标识符是一个枚举类型的名字。
  • 枚举常量表——由枚举常量构成。枚举常量表列出枚举类型的所有取值,取值类型与条件表达式相同。

枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,默认状态下,这个整数就是所列举元素的序号,序号从0开始。 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。 各枚举常量的值可以重复。例如:

enum optype {INT, FLOAT, DOUBLE=1, BOOL};
// 枚举常量 INT=0, FLOAT=1, DOUBLE=1, BOOL=2}

打印enum值

enum optype {INT, FLOAT, DOUBLE=1, BOOL};
optype op;
// op 赋值语句略
std::cout << static_cast<std::underlying_type<optype>::type>(a) << std::endl;

(部分内容参考菜鸟教程)

2. final 关键字

今天在代码中看到了这个关键字,就顺手查了一下,大概是两个用途:

  1. 禁止继承:即 无法继承含有该关键字的类,会导致编译错误。
  2. 禁止重写:即 将方法标记为final,这意味着无法再子类中重写该方法。

3. 析构函数中的冒号

冒号后跟参数列表及值,初始化的顺序只跟类中声明的顺序一致

用途大概三类:

  1. 对父类进行初始化
  2. 对类成员进行初始化
  3. 对类的const成员变量进行初始化

让我感兴趣的主要是第三点,因为:

由于const成员变量的值无法在构造函数内部初始化,因此只能在变量定义时赋值或使用初始化列表赋值。

另有注意事项:

对于2、3中的应用场景,有以下两点说明:
1、构造函数列表初始化执行顺序与成员变量在类中声明顺序相同,与初始化列表中语句书写先后无关。
2、相对于在构造函数中赋值,初始化列表执行效率更高。

摘自:https://blog.csdn.net/lusirking/article/details/83988421

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章