C++ Primer(5th edition)
- 类中的operator new和operator delete是隐式静态的
- new运算符不能被重载,operator new的重载只是改变内存分配的方式
- p->~string() 显式调用析构只清除对象,不释放内存
- rtti,也就是typeid和dynamic_cast,主要用于使用基类指针调用子类的非虚函数
- dynamic_cast不能用于不包含虚函数的类,编译会失败
- 限定作用域的枚举类型与不限定作用域的枚举类型:enum class color {red, green, blue};
- 不限定作用域的枚举类型的枚举成员可以隐式的转换为INT,限定作用域的则不会
- volatile用法和const类似,volatile的易变性在于它常用于修饰不被程序控制的变量
- 位域和volatile是不可移植的
- 两个链接指示不同的函数指针不能相互赋值
- 数据成员指针的定义实际上只是绑定类型,使用的时候才绑定对象
- 成员函数指针不是可调用对象
- std::function std::mem_fn std::bind都可以用成员函数指针构造可调用对象
- 给union中的对象赋值需要显示调用其析构函数
- 如果一个类要定义析构,那么很可能也要定义拷贝构造函数和拷贝赋值运算符
- 如果一个类有数据成员不能默认构造,拷贝,复制,或销毁,则对应的成员函数将被定义为删除的。如有CONST成员的类和有引用成员的类
- 拷贝构造和拷贝赋值是私有的,因此用户不能拷贝这种对象,但友员和成员函数可以。这时可以通过仅声明不定义的方式实现。
- 拷贝赋值运算符与拷贝构造不同的地方是,拷贝赋值运算符需要处理