C++ 变量的初始化方法

// 1. C++11 就地初始化
// 所谓就地初始化,就是在变量定义时直接给其初始化。
// 以前我们可以通过:构造函数、成员初始化列表
// C++98的时候,静态的const变量使用的就是就地初始化
class Demo1
{
public:
	const static int s_a = 100;
};
// C++11 之后,对于非静态的 const 变量也支持就地初始化
// 一种使用 = 号,另外一种使用花括号{}

class Other
{
public:
	Other() {}
	Other(int a, int b)
	{
		m1 = a;
		m2 = b;
	}
	int m1;
	int m2;
};

class Demo2
{
public:
	// 基本类型变量就地初始化
	int m_a = 100;
	int m_b = { 200 };
	int m_c{ 300 };
	// int m_d(400);   // 注意:不能使用圆括号进行就地初始化

	// 自定义类型的变量就地初始化
	Other m_d = {10, 20};
	Other m_e{ 100, 200 };
};

void test01()
{
	Demo2 demo;
	cout << demo.m_d.m1 << " " << demo.m_d.m2 << endl;
}

// 1.2 {} 的用途和使用场景
// 流程控制语句、函数用于标识作用域
// 用于初始化变量
void test02()
{
	int a{};
	int b{};
	cout << a << " " << b << endl;
}
// 用于创建对象, 构建一个返回值类型的对象并返回
Other my_func()
{
	return {};  // return Other()
	// return {10, 20};  // return Other(10, 20);
}

// 1.3 就地变量初始化、初始化列表、构造函数
// 就地初始化 -> 初始化列表 -> 构造函数
class Demo3
{
public:
	Demo3() : m_a(200)
	{
		m_a = 300;
	}
public:
	int m_a = 100;  // 就地初始化
};

void test03()
{
	Demo3 demo;
	cout << demo.m_a << endl;
}
未经允许不得转载:一亩三分地 » C++ 变量的初始化方法
评论 (0)

9 + 4 =