我有两个继承自基类People
的派生类(Student
和Teacher
)。
当我想声明 2 个变量 st
时,tc
的类型指针指向 People
,但指向 Student
的对象和 Teacher
类型添加到这个链接中:
class Node
{
private:
People* data;
Node* next;
};
所以我写:
People * st = new Student(...);
People * tc = new Teacher(...);
现在我想写一个复制构造函数来克隆st
, tc
(比如People *st1 = st
或其他任何东西来克隆它们variales 不使用默认代码)那么我该怎么做呢?
谢谢你!
p/s:抱歉我的英语不好。
最佳答案
您可以编写一个执行以下操作的复制构造函数:
People p(*st);
p
的类型将是 People
而不是 Student
。如果您想创建一个Student
,那么您可以向People
添加一个virtual
函数,称为clone
,如下所示:
class People {
...
virtual People *clone() = 0;
}
然后在每个派生类中实现它以返回派生类型的实例。这样您的用法将是:
People *st = new Student();
People *stClone = st->clone();
这里stClone
的类型是Student
而不是People
。
关于c++ - 使用基类和派生类复制构造函数 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726690/