C++: Why use an initializer list

  • Only the initialization list can initialize const constants, if we need to initialize constants at the constructor, we need to write like this.
  • Initializer lists can only be used in constructors
  • The initialization list is executed earlier than the constructor. The following is an example of the Teacher class:

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;
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325160555&siteId=291194637