这个带入口点的代码调用两次析构函数.
void Main(array<String^>^ args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
MyApp::MyForm form;
Application::Run(%form);
}
Run Code Online (Sandbox Code Playgroud)
我把它改成了
void Main(array<String^>^ args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew MyApp::MyForm);
}
Run Code Online (Sandbox Code Playgroud)
第二个版本只调用析构函数一次.
为什么最初被称为两次?
我需要绘制一个由以下语句组成的 UML 类图。
一个房子有一个地址,由几个房间组成。每个房间都有大小。它可以是卧室、客厅或厨房。一所房子至少由每种房间中的一个组成。
最后一个语句是一个约束,我需要将它添加到我的图表中。

UPD:整个任务如下。
绘制一个 UML 类图,准确表示以下场景: 一个家庭由任意数量的孩子和一两个父母组成。每个家庭成员都是一个有名字和年龄的人。孩子们可以玩游戏,父母可以上班,他们可以在厨房做饭。一个家庭住在一个有地址的房子里,房子里有几个房间。任意数量的家庭可以住在一所房子里。每个房间都有大小。它可以是卧室、客厅或厨房。一所房子至少由每种房间中的一个组成。任意数量的人睡在卧室里。
/* Class Hand represents a hand in Hold'em poker.
Namely the best 5 cards formed from 7 cards: 2 player's pocket cards
and 5 cards from the board.*/
class Hand {
public:
Hand(const std::vector<CardPtr>& cardseq);
/*...*/
};
Run Code Online (Sandbox Code Playgroud)
构造函数需要一个卡片向量.该类的内部逻辑基于给定向量由7张卡组成的假设.但我不是在控制它.我可以cardseq.size() != 7在构造函数中抛出异常.但是有没有其他方法通过控制初始化向量的大小来保持类实例的行为有意义?