用基类复制构造函数c++并派生类

Copy contructor c++ with base and derive class

本文关键字:派生 c++ 构造函数 基类 复制      更新时间:2023-10-16

我有两个派生类(StudentTeacher),它们继承自基类People。当我想声明2个变量sttc,类型指针指向People,但指向StudentTeacher类型的对象以添加到此链接中时:

class Node
{
private:
People* data;
Node* next;
};

所以我写:

People * st = new Student(...);
People * tc = new Teacher(...);

现在我想写一个复制生成器来克隆sttc(就像People *st1 = st或其他一切来克隆这些变体而不使用默认代码),那么我该怎么做呢?非常感谢。抱歉我英语不好。

您可以编写一个执行以下操作的复制构造函数:

People p(*st);

p的类型将是People而不是Student。如果您想创建一个Student,那么您可以向People添加一个名为clonevirtual函数,如下所示:

class People {
...
virtual People *clone() = 0;
}

然后在每个派生类中实现它以返回派生类型的实例。这样你的用法是:

People *st = new Student();
People *stClone = st->clone();

这里,CCD_ 19的类型是CCD_ 20而不是CCD_ 21。