c++ 继承相关知识及扩展

父类拷贝构造函数坑点

#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()
{

}


猜你喜欢

转载自blog.csdn.net/qq_36748278/article/details/80482119