初始化列表
作用:C++提供了初始化列表语法,用来初始化属性
语法:构造函数( ):属性1(值1),属性2(值2)…{ }
#include<iostream>
using namespace std;
//初始化列表
class Person {
public:
//传统初始化操作
/*Person(int a, int b, int c) {
m_A = a;
m_B = b;
m_C = c;
}*/
//初始化列表初始化属性
Person(int a,int b,int c) :m_A(a), m_B(b), m_C(c) {
}
int m_A;
int m_B;
int m_C;
};
void test01() {
//Person p(10, 20, 30);
Person p(30, 20, 10);
cout << "m_A = " << p.m_A << endl;
cout << "m_B = " << p.m_B << endl;
cout << "m_C = " << p.m_C << endl;
}
int main() {
test01();
system("pause");
return 0;
}
传统初始化操作
class Person {
public:
//传统初始化操作
Person(int a, int b, int c) {
m_A = a;
m_B = b;
m_C = c;
}
int m_A;
int m_B;
int m_C;
};
void test01() {
Person p(10, 20, 30);
cout << "m_A = " << p.m_A << endl;
cout << "m_B = " << p.m_B << endl;
cout << "m_C = " << p.m_C << endl;
}
运行结果
使用初始化列表来初始化属性
class Person {
public:
//初始化列表初始化属性
Person() :m_A(10), m_B(20), m_C(30) {
}
int m_A;
int m_B;
int m_C;
};
void test01() {
Person p;
cout << "m_A = " << p.m_A << endl;
cout << "m_B = " << p.m_B << endl;
cout << "m_C = " << p.m_C << endl;
}
运行结果
但此时变量无法再改变,很不好,所以代码需要一些小的改变
我们传入一些参数,用传入的参数来调整变量的值
class Person {
public:
//初始化列表初始化属性
Person(int a,int b,int c) :m_A(a), m_B(b), m_C(c) {
}
int m_A;
int m_B;
int m_C;
};
void test01() {
Person p(30, 20, 10);
cout << "m_A = " << p.m_A << endl;
cout << "m_B = " << p.m_B << endl;
cout << "m_C = " << p.m_C << endl;
}
运行结果