【发布时间】:2010-08-07 14:20:25
【问题描述】:
声明一个结构表:
struct Tables {
int i;
int vi[10];
Table t1;
Table vt[10];
};
Tables tt;
假设为 Table 定义了一个用户默认的构造函数。
这里 tt.t1 将使用 Table 的默认构造函数以及 tt.vt 中的每个元素进行初始化。
另一方面,tt.i 和 tt.vi 未初始化,因为这些对象不是类类型。
所以我们保留了一个半初始化的对象 tt。
如果我理解得很好 - 如果 tt.i 或 tt.vi 不会在代码中显式初始化,那么在创建 tt 之后,如果我们尝试从中读取值会引发错误?
2) 谁能给我解释一下,为什么 cpp 设计者不想简单地将内置类型 int 和 int[] 初始化为零?
【问题讨论】:
-
我猜默认构造函数(即使它运行了)什么也没做。
-
一切都与成本有关。 C++ 开发人员不想支付初始化成本,如果他们没有的话。见:stackoverflow.com/questions/1910832/…
标签: c++ object constructor