这张东西有点少,就写6条…
1. copy assignment operator在虚拟继承情况下行为不佳,有可能多次调用,比如说在一个菱形结构中。
2. 数组的定义,每个数组里的元素的构造和析构也跟之前的一样需要进行。数组里的元素按默认构造进行初始化。
3. new操作符
int *pi = new int(5);
//分两步进行
int *pi;
if( pi = __new(sizeof(int)) ){
*pi = 5;//成功了才初始化
}
4. Placement Operator new
Point p;
Point *p1 = new (&p) Point;//构造函数会调用
......
p1->~Point(); //需要手动调用析构,这里如果改为delete p1的话,是会释放内存的,书中所说的c++标准修正了这个问题,但至少我的编译环境c++11还没修正。
Point *p2 = new (&p) Point;//构造函数会调用
5. 数组的删除
Point *ptr = new Point3d[10];//base class 指针,指向derived class的数组
//尽量别这么干,否则直接 delete[] ptr;是有问题的
//非要这么干,在删除的时候,就得一个一个强制转换后再delete。
6.临时性对象
临时性对象在完整表达式尚未评估完全之前,不得被摧毁。