C++ 初始化列表、初始化常量成员详解(6)

目录

一、初始化列表

 二、初始化常量成员


一、初始化列表

概述:C++ 中的初始化列表是一种在创建对象时用于初始化其成员变量的特殊语法。它通常用于类的构造函数中,用于初始化类的成员变量,也可以用于数组和结构体。

语法:构造函数():属性1(值1),属性2(值2)... {}

初始化列表使用冒号(:)后跟成员变量列表

实例:

#include <iostream>
using namespace std;

class Person 
{
public:

	传统方式初始化
	//Person(int a, int b, int c) {
	//	m_A = a;
	//	m_B = b;
	//	m_C = c;
	//}

	//初始化列表方式初始化
	Person(int a, int b, int c) :m_A(a), m_B(b), m_C(c) {}

	void PrintPerson() 
	{
		cout << "mA:" << m_A << endl;
		cout << "mB:" << m_B << endl;
		cout << "mC:" << m_C << endl;
	}
private:
	int m_A;
	int m_B;
	int m_C;
};

int main()
{
	Person p(1, 2, 3);
	p.PrintPerson();

	return 0;
}

结果

mA:1
mB:2
mC:3

成员变量的初始化顺序与初始化列表中列出的变量的顺序无关,它只与成员变量在类中声明的顺序有关,如上类中定义的顺序为int m_A; int m_B; int m_C; 初始化列表的顺序不是这个也是安装这个顺序初始化赋值的。

如果成员变量的初始化依赖于其它成员变量,那么初始化顺序不同将导致不能正确的初始化。所以一般初始化列表尽量和类中定义顺序相同避免这种问题。

初始化列表可以用于全部成员变量,也可以只用于部分成员变量。如下只对 m_name 使用初始化列表,其他成员变量还是一一赋值:

Student::Student(char *name, int age, float score): m_name(name)
{
    m_age = age;
    m_score = score;
}

 二、初始化常量成员

实例:

class MyClass 
{
public:
    MyClass(int a) : constVar(a) 
    {
        // 构造函数的主体
    }

private:
    const int constVar;
};
  1. 常量成员变量必须在初始化列表中初始化,因为它们在对象创建后不能被修改。

  2. 如果在构造函数的主体中更改常量成员变量的值,将导致编译错误。


上一篇:C++构造函数详解

下一篇:C++析构函数详解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值