1、不同类型指针的区别
本质没有不同,不同类型的指针只是影响编译器对所指向内存的大小与内容解析方式而已
2、默认构造函数
只有在四种情况下系统才会给你构造默认的
1、有member object
2、有base object
3、有 virtual function
4、base object 有virtual function
3、默认copy 构造函数
只有在四种情况下才不会表现出 bitwise copy semantics
1、member object 含有copy constructor
2、base含有 copy constructor
3、含有 virtual function
4、base object链上含有 virtual base class
4、NRV优化(name return Value)
当有一个copy constructor(无论是自己定义的还是系统生成的)根据编译器可能进行nrv优化,提高效率
Point3d::Point3d( )
{
memcpy(this,0,sizeof(Point3d));
}
此时的Point3d对象里面有virtual function 会导致虚函数表也被置为0