父类拷贝构造函数坑点
#include<iostream>
using namespace std;
class Base
{
public:
Base(int initialValue = 0):x(initialValue){}
Base(const Base &rhs):x(rhs.x){}
virtual ~Base();
private:
int x;
};
class Derived : public Base
{
public:
Derived(int initialValue):Base(initialValue),y(initialValue){}
//错误的构造函数。当Derived的拷贝创建时,没有拷贝基类部分。
//虽然他的Base部分还是创建了,但是它用的是Base的缺省构造函数,成员x被初始化为0,而没有估计到背靠背对象的x值是多少
//Derived(const Derived & rhs):y(rhs.y){}
//因此Derived的拷贝构造函数,必须保证调用的是Base的拷贝构造函数,而不是Base的缺省构造函数。
Derived(const Derived &rhs):Base(rhs),y(rhs.y){}
private:
int y;
};
int main()
{
}