C++:为什么使用初始化列表

  • 只有初始化列表可以初始化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;
}

猜你喜欢

转载自my.oschina.net/hengbao666/blog/1805723