让自己习惯C++

  • 视c++为一个语言联邦
  1. C
  2. Object_Oriented C++ (c with classes)
  3. Template C++
  4. STL
  • 宁可以编译器替换预处理器
  1. static 成员需要一个放在实现文件的定义式。放在头文件的是declaration,放在实现文件的是defination。
  2. 对于单纯常量,最好以const对象或enums替换#defines
  3. 对于形似函数的宏,最好该用inline函数替换#defines
  • 尽可能使用const
  1. const 可施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体
  2. 如果你希望迭代器所指的东西不可被改动,你需要的是const_iterator
  3. 令函数返回一个常量值,往往可以降低因客户错误而造成的意外
  4. 将const实施于成员函数的目的,是为了确认该成员函数可作用于const对象上。
  5. 两个成员函数若只是constness的不同,可以被重载
  6. mutale 释放no_static成员变量的bitwise constness的约束
  7. 编译器强制实行bitwise constness,但你编写程序时应该使用概念上的常量性。概念上的常量性可能是为什么mutable为什么存在叭。
  8. 在const 和 non-const 成员函数有着实质性等价的实现时,令non-const版本调用const版本可以避免代码重复
  • 确定对象在使用前已先被初始化
  1. 为内置型对象进行手工初始化,因为c++不保证初始化它们
  2. 如果成员变量是const 或 引用,它们一定需要初始化,不能被赋值。
  3. 构造函数最好使用成员初值列,而不要在构造函数内使用赋值操作,初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同
  4. c++对于定义在不同编译单元内的non-local static对象的初始化顺序并无明确定义
  5. 我们需要做的是将non-local static 对象放搬到专属函数内,(该对象在函数内被声明为static),返回一个引用指向它所含的对象。单例设计模式。 
posted @ 2023-03-12 20:31  stu--wy  阅读(22)  评论(0)    收藏  举报