C++ - 对象模型之各种对象的内存分配、构造和析构(二)

2014-11-24 07:47:16 · 作者: · 浏览: 2
问题,C++并没有提供一个万全之策;
2. Base b; new(&b)Derived; 假设Base和Derived类都声明了virtual f(),那么b.f()执行的是Base的还是Derived,很遗憾,编译器一般都会去调用Base::f();
对于placement new用法比较少,也比较简单,所以使用的时候一定注意即可。
临时性对象
如:www.2cto.com
Class1 A, B;
if(A+B){
//do something;
}
A+B就会产生一个临时对象,if再判断临时对象。
至于这个临时对象如何被释放,C++标准并没有给出明白的规定。
临时对象,程序员一般看不到,它编译器自动生成的,这可能会产生效率上的问题,至于如何避免效率上的问题,靠时间慢慢体会吧。