是否可以在引用另一个派生类的派生类中声明复制构造函数?

Is it possible to declare a copy constructor in a derived class that references another derived class?

本文关键字:派生 声明 复制 构造函数 引用 另一个 是否      更新时间:2023-10-16

例如,如果我创建一个Base类和 2 个派生类,DerivedOneDerivedTwo,是否可以在引用DerivedTwoDerivedOne中声明一个复制构造函数?

谢谢

你在寻找这样的东西吗?

#include <iostream>
using namespace std;
class B{
protected:
int a;
public:
B(int i):a(i){}
B(const B &b): a(b.a){cout<<"copying... ";}   //base class copy constructor
virtual void print()=0;
};
class D1: public B{
//other functions and variables
public:
D1(): B(5){ /*other initializations*/ };
void print(){cout<<"D1:"<<a<<endl;}
};
class D2: public B{
//other functions and variables
public:
D2(const B &b):B(b){ /*other initializations*/ }    //COPY CONSTRUCTOR
void print(){cout<<"D2:"<<a<<endl;}
};
int main() {
D1 d1;
d1.print();     // output: D1:5
B &b=d1;
D2 d2(b);
d2.print();     // output: copying... D2:5
return 0;
}

如果有什么不清楚的地方,请在评论中告诉我。