【C++对象模型】构造函数语意学之二 拷贝构造函数

 

关于默认拷贝构造函数,有一点和默认构造函数类似,就是编译器只有在【需要的时候】才去合成默认的拷贝构造函数。

在什么时候才是【需要的时候】呢?

也就是类不展现【bitwise copy semantics】时,即不展现【逐位次拷贝】时,才会合成默认拷贝构造函数。

所谓的【逐位次拷贝】,也就是简单的赋值,不管类内的数据成员是int还是char*指针,都是简单的赋值,这叫【逐位次拷贝】。

 

那什么请下不展现【逐位次拷贝】呢?

有四种情况:

①类中有一个类对象成员,而该类对象成员声明了一个默认拷贝构造函数(不管这个默认拷贝构造函数是显式声明的还是编译器合成的)

②类继承自一个基类,而该基类有一个默认拷贝构造函数(不管这个默认拷贝构造函数是显式声明的还是编译器合成的)

③类声明了一个或多个虚函数时

④类派生自一个继承链,其中有一个或多个虚基类时

 

  

 

【C++对象模型】构造函数语意学之二 拷贝构造函数,布布扣,bubuko.com

【C++对象模型】构造函数语意学之二 拷贝构造函数

上一篇:C和C++中泛型编程 - 适应不同类型参数的函数


下一篇:JAVA批处理操作