[C++之旅] 11 初始化列表
初始化列表的特性
- 初始化列表先于构造函数执行
- 初始化列表只能用于构造函数
- 初始化列表可以同时初始化多个数据成员
- 初始化列表比构造函数效率高速度快
class Student
{
public:
Student():m_strName("Tim"),m_age(10){}
private:
string m_strName;
int m_age;
};
Student():m_strName("Tim"),m_age(10){}
为初始化列表,实例化时初始化m_strName为Tim、m_age为10。
初始化列表的必要性
当类中有const常量时,给const赋初值时就得使用初始化列表
class Student
{
public:
Student():m_strName("Tim"),m_age(10),max_stu(100){}
private:
string m_strName;
int m_age;
const int max_stu;
};
若使用Student(){max_stu = 150}
就是错误的。
初始化列表的使用
初始化列表可以用于无参、有参的构造函数
-
构造函数用于无参的构造函数
类的定义
class Student { public: Student(); private: string m_strName; int m_age; int m_code; };
函数的定义
Student::Student():m_strName("Tim"),m_age(10) { m_code = 1; }
函数的使用
Student s1;
-
构造函数用于有参的构造函数
类的定义
class Student { public: Student(string name = "Tim", int age = 1); private: string m_strName; int m_age; };
函数的定义
Student::Student(string name, int age):m_strName(name),m_age(age) { }
函数的使用
Student s1; Student s2("Tom"); Student s3("Merry", 18);
第一种使用结果为m_strName = Tim,m_age = 1;
第二种使用结果为m_strName = Tom,m_age = 1;
第三种使用结果为m_strName = Merry,m_age = 18;
网友评论