在下面的代码中,如何实例化类Side
的{{1}}个对象?
Rectangle
答案 0 :(得分:9)
只要您实例化其所属类的对象,就会对所有数据成员进行实例化。但是您似乎在询问初始化,或者至少如何确保数据余烬在拥有它们的类的构造函数被调用之后具有某个值。
在构造函数初始化列表 * 中初始化成员是最有意义的:
Rectangle(int s1, int s2) : a(s1), b(s2) {}
请注意,您仍然可以在初始化后的任何时刻修改数据成员。在此示例中,使用了 assignment :
a = Side(1);
b = Side(42);
*在这种情况下,如果你想保留Rectangle
的构造函数,则没有选项,因为Side
没有默认构造函数。如果没有在构造函数的初始化列表中显式构造成员,则会隐式调用它们的默认构造函数,因此它们必须是 default constructable 。