我有两个派生类(Student
和Teacher
),它们从基类People
继承。
当我想声明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
或其他所有东西来克隆这些变量,而不使用默认代码),那么我该怎么做?谢谢!
p / s:对不起,我的英语不好。
最佳答案
您可以编写执行以下操作的副本构造函数:
People p(*st);
p
的类型将是People
,而不是Student
。如果要创建Student
,则可以将virtual
函数添加到名为People
的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/