如何实例化作为类成员的对象
How to instantiate objects which are members of a class?
在下面的代码中,我如何实例化类Rectangle
的Side
对象?
class Side{
int l;
public:
Side(int x){
l=x;
}
}
class Rectangle {
Side a, b;
public:
Rectangle(int s1, int s2){
//How to initialize a and b?
}
}
所有数据成员都在实例化它们所属类的对象时被初始化。但是您似乎在询问初始化,或者至少如何确保在拥有它们的类的构造函数被调用后数据余烬具有一定的值。
在构造函数初始化列表中初始化成员是最有意义的*:
Rectangle(int s1, int s2) : a(s1), b(s2) {}
注意,在初始化之后,您仍然可以在任何时候修改数据成员。在这个例子中,使用了赋值:
a = Side(1);
b = Side(42);
*在这种情况下,如果您想保留Rectangle
的构造函数,则没有选项,因为Side
没有默认构造函数。如果不显式地在构造函数的初始化列表中构造成员,则隐式地调用其默认构造函数,因此它们必须是默认可构造的。
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- C++是否有定义的方法来传递指向类的成员对象的成员函数的指针
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 声明成员对象而不调用其默认构造函数
- 指向成员对象的指针 - 中断线程
- 是否有更好的方法来封装成员对象可以访问的共享存储池?
- 应该在成员对象上调用析构函数
- 调用成员对象的构造函数
- 将 const 类型引用对象注册为类成员对象C++
- 修改类 c++ 中的成员对象
- 从成员对象调用方法
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值
- 构造函数,成员对象
- 不能使外部类成为内部类内的成员对象
- 使用从另一个类继承的类的对象初始化成员对象
- 如何避免需要在初始化列表中初始化成员对象
- 初始化具有参数的类成员对象的正确方法
- 将指针添加到成员对象中的指针动态阵列
- C 将成员对象函数分配给类成员功能