成员初始化程序
回想一下,常量是不能改变的变量,所有 const 变量必须在创建时被初始化。
C++ 提供了一个方便的语法来初始化类成员,称为成员初始化列表(也称为构造函数初始值设定)。
成员初始化
例如:
class MyClass {
public:
MyClass(int a, int b) {
regVar = a;
constVar = b;
}
private:
int regVar;
const int constVar;
};
这个类有两个成员变量 regVar 和 constVar。有一个构造函数,构造函数有两个参数,用于初始化成员变量。
运行这个代码会返回一个错误,因为它的一个成员变量是一个常量,在声明之后不能赋值。
在像这样的情况下,可以使用成员初始化列表为成员变量赋值。
class MyClass {
public:
MyClass(int a, int b)
: regVar(a), constVar(b)
{
}
private:
int regVar;
const int constVar;
};
请注意,在语法中,初始化列表遵循构造函数参数。该列表以冒号(:)开始,然后列出要初始化的每个变量以及该变量的值,并用逗号分隔它们。
使用语法 变量(值) 来分配值。
初始化列表消除了在构造函数体中放置显式赋值的需要。此外,初始化列表不以分号结束。

Student::Student(int a,int b)
:age(a),num(b){
}
成员初始化程序
我们使用单独的头文件和源文件来编写前面的示例。
MyClass.h
class MyClass {
public:
MyClass(int a, int b);
private:
int regVar;
const int constVar;
};
MyClass.cpp
MyClass::MyClass(int a, int b)
: regVar(a), constVar(b)
{
cout << regVar << endl;
cout << constVar << endl;
}
我们在构造函数中添加了 cout 语句来显示成员变量的值。
下一步是在 main 中创建我们的类的对象,并使用构造函数来赋值。
#include "MyClass.h"
int main() {
MyClass obj(32, 56);
}
/*输出
32
56
*/
构造函数用于创建对象,通过成员初始化列表将两个参数分配给成员变量。

成员初始化列表可以用于常规变量,常量变量。
常量变量必须使用成员初始化列表进行初始化。
即使在成员变量不是常量的情况下,使用成员初始值设定语法也是很有意义的。

文章评论