【发布时间】:2011-10-10 15:40:37
【问题描述】:
如何将派生类复制到另一个?
我的术语有缺陷,所以我将尝试用一个例子来说明。
我们正在与计算机玩家和人类玩家一起玩纸牌游戏。 Card 和 Command 是其他类。
class Player
{
Card *Hand[4];
// etc...
};
class Human: public Player
{
Command getCommand();
void PlayCard(Card card);
void quit();
// etc...
};
class Computer: public Player
{
Command ai();
void PlayCard(Card card);
// etc...
};
我们在主函数的某个地方...
// ...
Human p1; // Assume initialized and usable.
if(p1.getCommand() == QUIT)
{
cout << "PLAYER 1 RAGEQUITS WHAT A NOOB LOL << endl;
cout << "A COMPUTER WILL NOW TAKE OVER." << endl;
p1.quit()
p1 = new Computer(); // THE IDEA BEING THAT WE WANT TO PRESERVE p1's MEMBERS.
}
// ...
我要做的是将 p1 转换为“计算机”,同时保留其成员的状态。
我们是否使用复制构造函数来执行此操作?如果没有,你使用什么方法?
编辑:这是使用赋值运算符的方式吗?
Computer& Human::operator=(const Human &h) // Assignment operator
{
Hand = h.Hand;
member2 = h.member2;
member3 = h.member3;
...
return *this;
}
我们需要删除/释放主要内容吗?
【问题讨论】:
-
好消息:你拼写“术语”正确:)
-
这是
class,不是Class;和public,而不是Public
标签: c++ oop abstract-class copy-constructor