Class One : public Two
{
public:
One()
{
Three three;
cout << "something";
}
private:
Four _four;
};我必须显示一句话:“一、二、三、四、五、六、七”,第一类必须保持原样。每个类都不能在其构造函数和析构函数中显示多个单词。
所以..。我已经计算出我的基类是class 4。我还创建了constr。& destr。并试图在他们的身体中写一些东西,但这就是我在输出中得到的:
Class Four Constructor:
Class Three Constructor:
Class Two Constructor:
Class Four Constructor:
Class Four Constructor:
Class Three Constructor:
Class One Constructor:
Class Three Destructor:
Class Four Destructor:
DESTRUCTION:
Class One Destructor:
Class Four Destructor:
Class Two Destructor:
Class Three Destructor:
Class Four Destructor:我的主要功能是:
int main()
{
One one; //<---- it also have to remain
cout << endl;
cout << "DESTRUCTION:\n";
}我读过一些关于继承的文章,但仍然不知道如何在类中显示单词。&析构函数,但不要做两次或更多,即使我创建了这些类的对象,就像在第一个类中一样。
P.S为语法和其他错误道歉;)
发布于 2011-01-06 22:53:42
仅根据已知的One定义(以及我对C++构造规则的记忆,这可能不是100%准确:-),我们可以推断出什么,没有考虑到类之间任何其他可能的继承关系:
Two() (作为基类构造函数)的输出在所有其他构造函数的输出之前,Four() (属于派生类的成员)的输出紧随其后,Three() (<代码>D10构造函数中的本地对象)、One()本身、~Three() (作为局部变量,从One()).返回时超出范围)的输出
在这里,我们构造了闪亮的One对象。既然我们对它无能为力,那就销毁它吧!请注意,所有对象都以与其构造顺序相反的顺序销毁;这是一个基本的C++规则。因此
~Four() (因为成员在它们的所有者之前被销毁)、~One()的输出,因为类的派生部分在其基部分之前被销毁)、~Two()作为基部分的输出最后被销毁。<代码>H230<代码>G231这给了您七个可能的数字来输出,因此您不需要任何额外的基类或成员。只需将正确的数字放入正确的构造函数和析构函数的输出中:-)
发布于 2011-01-06 23:01:28
你已经把它标记为家庭作业了,所以我不打算告诉你答案...
本练习的目的似乎是帮助您理解构造函数和析构函数的调用顺序。由于您只能使用类继承、成员变量、构造函数和析构函数,因此它们是确定程序流以及输出顺序的唯一机制
以下是一些问题:
首先执行主体的
我建议从一个简单的例子开始。两个类,每个类都有构造函数和析构函数,一个子类化另一个子类化。在每个函数中打印一些内容,然后查看排序。然后添加另一个类,使其成为成员变量。会发生什么?
由于您必须输出奇数个单词,因此一个类只能在其构造函数或析构函数中打印,而不能同时在这两个函数中打印。
顺便说一句,在你的问题中,第四类不是基类。
祝好运!
发布于 2011-01-07 00:11:46
好了,完成了:]感谢您的回复,特别是Péter Török :)
class Two
{
public:
Two()
{
cout << "Class Two Constructor: ONE" << endl;
}
~Two()
{
cout << "Class Two Destructor:" << endl;
}
};
class Three
{
public:
Three()
{
cout << "Class Three Constructor: THREE" << endl;
}
~Three()
{
cout << "Class Three Destructor: FIVE" << endl;
}
};
class Four
{
public:
Four()
{
cout << "Class Four Constructor: TWO" << endl;
}
~Four()
{
cout << "Class Four Destructor: SEVEN" << endl;
}
};
class One: public Two
{
public:
One()
{
Three Three;
cout << "Class One Constructor: FOUR" << endl;
}
~One()
{
cout << "Class One Destructor: SIX" << endl;
}
private:
Four _Four;
};和输出:
Class Two Constructor: ONE
Class Four Constructor: TWO
Class Three Constructor: THREE
Class One Constructor: FOUR
Class Three Destructor: FIVE
DESTRUCTION:
Class One Destructor: SIX
Class Four Destructor: SEVEN
Class Two Destructor:https://stackoverflow.com/questions/4616037
复制相似问题