- 只有初始化列表可以初始化const常量,如果我们需要在构造函数处初始化常量,需要这样写。
- 初始化列表只能应用在构造函数中
- 初始化列表早于构造函数执行,下面以Teacher类举例:
Teacher.h
#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
Teacher(string name="Jim",int age=1,int m=100);
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
void teach();
int getMax();
private:
string m_strName;
string m_strGender;
int m_iAge;
const int m_iMax;
};
Teacher.cpp
#include "Teacher.h"
Teacher::Teacher(string name,int age,int m):m_strName(name),m_iAge(age),m_iMax(m)
{
cout<<"Teacher(string name,int age,int m):m_strName(name),m_iAge(age),m_iMax(m) "<<endl;
}
int Teacher::getMax()
{
return m_iMax;
}
void Teacher::setName(string _name)
{
m_strName=_name;
}
string Teacher::getName()
{
return m_strName;
}
void Teacher::setGender(string _gender)
{
m_strGender=_gender;
}
string Teacher::getGender()
{
return m_strGender;
}
void Teacher::setAge(int _age)
{
m_iAge=_age;
}
int Teacher::getAge()
{
return m_iAge;
}
void Teacher::teach()
{
cout<<"现在上课了"<<endl;
}
demo.cpp
#include "Teacher.h"
int main()
{
Teacher t1("merry",12,150);
cout<<t1.getName()<<"\t"<<t1.getAge()<<"\t"<<t1.getMax()<<endl;
return 0;
}