【发布时间】:2020-06-10 19:02:46
【问题描述】:
假设程序有两个参数,一个是storage_duration_name,另一个是count。我们有一个名为anywhere 的类,它有一个默认的构造函数和析构函数。程序必须从索引参数值 0 开始,依次创建 <count>(不多也不少)anywhere 类型的对象,一直到 <count> - 1 并包括在内。
storage_duration_name 可以是自动、动态、静态或线程。
例如,如果命令行参数是:
自动 4那么程序必须产生以下输出:
构造函数自动 0 构造函数自动 1 构造函数自动 2 构造函数自动 3 析构函数自动 3 析构函数自动 2 析构函数自动 1 析构函数自动 0程序已求解为动态。
对于自动类型,如果我使用for 循环来实现它,那么每个析构函数都会在构造函数之后调用。如何“延长”此类对象的寿命?
for (int i = 0; i < count; i++)
{
anywhere obj(storage_duration_name, i);
}
【问题讨论】:
-
延长到什么寿命?这正是自动生命周期是什么,你想扩展到什么?
-
我想为'anywhere'类的对象计数次数,然后调用它们的析构函数。根据问题,它们应该具有自动生命周期。
-
你已经在这样做了。除非您的意思是要确保它在以相同顺序销毁它们之前创建
count对象。这是您无法真正做到的,因为它涉及 动态 数据 -
使用递归创建它们。现在您所要做的就是在递归堆栈展开之前弄清楚如何在递归堆栈底部访问它们。
-
谢谢,线程呢?我可以制作多个胎面对象吗?