如何实例化作为类成员的对象

How to instantiate objects which are members of a class?

本文关键字:成员 对象 实例化      更新时间:2023-10-16

在下面的代码中,我如何实例化类RectangleSide对象?

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没有默认构造函数。如果不显式地在构造函数的初始化列表中构造成员,则隐式地调用其默认构造函数,因此它们必须是默认可构造的