C++构造函数初始化列表

C++构造函数初始化列表教程

C++ 中,我们创建一个 时,会自动给我们添加一个跟类名一样的 函数,即,构造方法(或构造函数)。构造方法的主要作用就是用来给类做一些初始化工作。

当我们需要初始化类中的 成员变量 时,除了可以直接在构造函数里面进行直接赋值,还可以使用初始化列表的方式来对成员变量进行初始化。

C++初始化列表详解

语法

Contractor(type1 var1, type2 var2): m_var1(var1), m_var2(var2) { }

参数

属性 描述
type1 形参 var1 的类型。
var1 形参 var1。
type2 形参 var2 的类型。
var2 形参 var2。
m_var1 成员变量 m_var1。
m_var2 成员变量 m_var2。

说明

我们使用初始化列表的方式,用形参 var1 初始化了成员变量 m_var1,用形参 var2 初始化了成员变量 m_var2。

案例

初始化列表

使用初始化列表初始化成员变量

#include <iostream> using namespace std; class Student { public: Student(string name, int age) { m_name = name; m_age = age; } void sayHello() { cout << "I am " << m_name << " and i am " << m_age << " years old!" << endl; } private: string m_name; int m_age; }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu("HaiCoder", 109); stu.sayHello(); Student stu1("Jobs", 57); stu1.sayHello(); return 0; }

程序运行后,控制台输出如下:

23_C初始化列表.png

我们创建了一个类 Student,接着,我们为该类添加了一个构造函数和一个 sayHello 方法 ,最后,我们创建了两个 Student 类的实例。

我们看到,我们在构造函数里面,我们使用了赋值的方式,将构造函数的形参 name 和 age,分别赋值给了成员变量 m_name 和 m_age。

最后,我们在 sayHello 方法里面可以成功的访问这两个成员变量。现在,我们将程序修改为使用初始化列表的方式,修改程序如下:

#include <iostream> using namespace std; class Student { public: Student(string name, int age):m_name(name), m_age(age) { } void sayHello() { cout << "I am " << m_name << " and i am " << m_age << " years old!" << endl; } private: string m_name; int m_age; }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu("HaiCoder", 110); stu.sayHello(); Student stu1("JackMa", 61); stu1.sayHello(); return 0; }

程序运行后,控制台输出如下:

24_C初始化列表.png

这次,我们在构造函数上面,使用了初始化列表的方式,初始化了成员变量,我们可以看到,我们同样实现了初始化成员变量的效果。

C++构造函数初始化列表总结

当我们需要初始化类中的成员变量时,除了可以直接在构造函数里面进行直接赋值,还可以使用初始化列表的方式来对成员变量进行初始化。