C++: Initialize member variables (no-argument construction | argument construction | initialization list)


Usually we need to initialize member variables, mainly in the following ways

1 No-argument constructor initializes member variables

Initialize member variables in no-argument constructor

Sample code:

#include <iostream>
#include <string>

using namespace std;

class Person
{
    
    
public//在无参构造函数中初始化成员变量
	Person()
	{
    
    
		m_age = 18;
		m_weight = 72.5;
		m_sex = "男";
	}
	
public:
	int m_age;
	double m_weight;
	string m_sex;

};

int main()
{
    
    
	Person Zhang;
	cout << "姓名:" << Zhang.m_age << endl;
	cout << "体重:" << Zhang.m_weight << endl;
	cout << "性别:" << Zhang.m_sex << endl;
}

Output result:

姓名:18
体重:72.5
性别:男

2 Initialize member variables in the parameter list of the parameterized constructor

Sample code:

#include <iostream>
#include <string>

using namespace std;

class Person
{
    
    
public:
	//在有参构造函数中初始化成员变量
	Person(int age, double weight, string sex)
	{
    
    
		m_age = age;
		m_weight = weight;
		m_sex = sex;
	}

public:
	int m_age;
	double m_weight;
	string m_sex;

};

int main()
{
    
    
	Person Zhang(18, 72.5, "男");
	cout << "姓名:" << Zhang.m_age << endl;
	cout << "体重:" << Zhang.m_weight << endl;
	cout << "性别:" << Zhang.m_sex << endl;
}

Output result:

姓名:18
体重:72.5
性别:男

3 Initialize member variables using an initialization list

grammar:
构造函数(): 成员变量1(), 成员变量2(), 成员变量3(), 成员变量n() {}

3.1 No-argument constructors use initialization lists

Sample code:

#include <iostream>
#include <string>

using namespace std;

class Person
{
    
    
public:
	//无参构造函数使用初始化列表
	Person() :m_age(18), m_weight(72.5), m_sex("男")
	{
    
    

	}

public:
	int m_age;
	double m_weight;
	string m_sex;

};

int main()
{
    
    
	Person Zhang;
	cout << "姓名:" << Zhang.m_age << endl;
	cout << "体重:" << Zhang.m_weight << endl;
	cout << "性别:" << Zhang.m_sex << endl;
}

Output result:

姓名:18
体重:72.5
性别:男

3.2 Argument constructors use initialization lists

Sample code:

#include <iostream>
#include <string>

using namespace std;

class Person
{
    
    
public:
	//有参构造函数使用初始化列表
	Person(int age, double weight, string sex) :m_age(age), m_weight(weight), m_sex(sex)
	{
    
    
		
	}

public:
	int m_age;
	double m_weight;
	string m_sex;

};

int main()
{
    
    
	Person Zhang(18, 72.5, "男");
	cout << "姓名:" << Zhang.m_age << endl;
	cout << "体重:" << Zhang.m_weight << endl;
	cout << "性别:" << Zhang.m_sex << endl;
}

Output result:

姓名:18
体重:72.5
性别:男

4 Initialize when declaring member variables

Sample code:

#include <iostream>
#include <string>

using namespace std;

class Person
{
    
    
public:
	int m_age = 18;
	double m_weight = 72.5;
	string m_sex = "男";

};

int main()
{
    
    
	Person Zhang;

	cout << "姓名:" << Zhang.m_age << endl;
	cout << "体重:" << Zhang.m_weight << endl;
	cout << "性别:" << Zhang.m_sex << endl;
}

Output result:

姓名:18
体重:72.5
性别:男

Guess you like

Origin blog.csdn.net/weixin_46098577/article/details/122223452