C++,复制构造函数声明/定义

Ian*_*Ian 2 c++ constructor copy

如果某些类不执行动态内存分配,则仅声明一个复制构造函数就足够了?

请参阅以下示例

代替:

class A
{
    protected :
            int a;
    public:
            A(const A &source)
            {
                    a = source.a;
            }


};

class B: public A
{
    protected :
            int b;
    public:
            B(const B &source): A(source)
            {
                    b = source.b;
            }
};
Run Code Online (Sandbox Code Playgroud)

使用:

class A
{
    protected :
            int a;
    public:
            A(const A &source);

};

class B: public A
{
    protected :
            int b;
    public:
            B(const B &source);

};
Run Code Online (Sandbox Code Playgroud)

第二种变体有时会引起问题吗?一些例子会有所帮助.

Vin*_*Pai 5

如果每个项目的简单逐项复制都可以解决问题,即,当您没有需要深度复制的指针时,除了初始化变量之外,构造函数中没有其他行为,您不需要完全声明一个拷贝构造函数.默认实现将为您执行此操作.