在 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;
}
程序运行后,控制台输出如下:
我们创建了一个类 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;
}
程序运行后,控制台输出如下:
这次,我们在构造函数上面,使用了初始化列表的方式,初始化了成员变量,我们可以看到,我们同样实现了初始化成员变量的效果。
当我们需要初始化类中的成员变量时,除了可以直接在构造函数里面进行直接赋值,还可以使用初始化列表的方式来对成员变量进行初始化。