形式为
类内定义 Student:m_name("jo"),age(10){...}
类外定义 Student::Student(string name,int age):m_name(name),m_age(age){...}
注意:1)可以同时给多个数据赋默认值,以 逗号 隔开;
2)只能使用括号进行初始值赋值;
3)最后大括号{}内可以加其他函数---即初始化列表只能用于构造函数,且必须先于构造函数执行;
4)大括号{}结尾没有标点符号
===>为何需要初始化列表,而不是依靠构造函数来完成呢?
--->初始化列表可以为const变量进行赋值,而构造函数不可。
使用示例:
class Student{
public:
Student(string names="TTT",int ages=1000); //赋默认值
void setname(string name);
void getAge();
private:
string m_name;
const int m_age;
};
Student::Student(string names,int ages):m_name(names),m_age(ages){ //更改name和age,其中age为const
类型,但仍可更改,此即构造函数
初始化列表的特殊用处;
cout<<"default name"<<" "<<m_name<<endl;
cout<<"default age"<<" "<<m_age<<endl;
}
void Student::setname(string name){
m_name=name;
}
void Student::getAge(){
cout<<m_age;
}
int main(){
Student jo; //此时jo将为默认值m_name="TTT",m_age=1000;
Student jo("Mary",9999); //此时jo的name age 将同步更改;
jo.setname("yoyo");
return 0;
}