您的位置:首页 > 编程语言 > C语言/C++

[温故而知新] 《深度探索c++对象模型》——运行期语意

2016-04-12 00:47 344 查看
这张东西有点少,就写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.临时性对象

临时性对象在完整表达式尚未评估完全之前,不得被摧毁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: