类和对象—初始化列表
C++提供了初始化列表语法,用来初始化属性
语法 : 构造函数()∶属性1(值1), 属性2(值2) … {}
1 传统初始化操作
//传统初始化操作
//初始化列表
class Person
{
public:
//传统初始化操作
Person(int a,int b,int c)
{
A = a;
B = b;
C = c;
}
int A;
int B;
int C;
};
调用
void test1()
{
Person p(10,20,30);
cout << "A=" << p.A << endl;
cout << "B=" << p.B << endl;
cout << "C=" << p.C << endl;
}
int main()
{
test1();
return 0;
}
2 初始化列表—初始化属性
//C++提供了初始化列表语法,用来初始化属性
//语法 : 构造函数()∶属性1(值1), 属性2(值2) … {}
//初始化列表初始化属性
//初始化列表初始化属性
class Person
{
public:
//初始化列表初始化属性
Person(): A(10), B(20), C(30)
{
}
int A;
int B;
int C;
};
调用
void test1()
{
Person p;
cout << "A=" << p.A << endl;
cout << "B=" << p.B << endl;
cout << "C=" << p.C << endl;
}
int main()
{
test1();
return 0;
}
以上写法,有些缺点
Person(): A(10), B(20), C(30)
A,B,C在初始化时,值已经写死了,不能修改
改进
class Person
{
public:
//初始化列表初始化属性
Person(int a, int b, int c) : A(a), B(b), C(c)
{
}
int A;
int B;
int C;
};
void test1()
{
Person p(30,20,10);
cout << "A=" << p.A << endl;
cout << "B=" << p.B << endl;
cout << "C=" << p.C << endl;
}
int main()
{
test1();
return 0;
}
注意:
Person(int a, int b, int c) : A(a), B(b), C©
冒号的位置
参考:黑马程序员
哔哩哔哩 黑马程序员