C++中的成员初始化列表是定义构造函数时经常使用的技巧,它可以让我们在对象构造的过程中直接初始化成员变量,而不需要在构造函数里手动赋值。使用成员初始化列表可以提高程序的运行效率,也更加方便直观。
成员初始化列表使用冒号连接,语法如下:
class MyClass {
public:
MyClass(int num1, int num2) : member1(num1), member2(num2) {}
private:
int member1;
int member2;
};
在上面的例子中,我们定义了一个名为MyClass的类,并在构造函数中使用了成员初始化列表。这个构造函数接收两个int类型的参数,然后用这两个参数初始化了成员变量member1和member2。
具体来说,成员初始化列表的工作方式是在对象的构造函数被调用之前,先将成员变量的值设定为参数,并且在构造函数的前面用冒号“:”连接。
除了可以在构造函数里初始化成员变量外,成员初始化列表还支持调用基类的构造函数、调用类的其他构造函数等等功能。下面我们来看看具体例子:
例子1:调用基类的构造函数
class MyBaseClass {
public:
MyBaseClass(int num) : member(num) {}
private:
int member;
};
class MyDerivedClass : public MyBaseClass {
public:
MyDerivedClass(int num1, int num2) : MyBaseClass(num1), member(num2) {}
private:
int member;
};
在例子1中,我们定义了两个类,一个是MyBaseClass基类,一个是继承自MyBaseClass的子类MyDerivedClass。这里,使用成员初始化列表可以让我们在子类构造函数中调用父类的构造函数,从而正确地初始化父类成员变量。
例子2:调用其他构造函数
class MyClass {
public:
MyClass(int num1, int num2) : member1(num1), member2(num2) {}
MyClass() : MyClass(0, 0) {}
private:
int member1;
int member2;
};
在例子2中,我们定义了一个名为MyClass的类,并同时定义了两个构造函数,一个带参数,一个不带参数。使用成员初始化列表可以让我们在不带参数的构造函数中调用带参数的构造函数,从而简化了代码。
总的来说,成员初始化列表是一个十分有用的构造函数技巧,可以大幅提高代码的可读性,也能够提高代码的效率。在实际开发中,我们应该养成使用成员初始化列表的好习惯,避免在构造函数里手动赋值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++成员初始化列表 - Python技术站