// 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++ 变量的初始化方法
未经允许不得转载:工具盒子 » C++ 变量的初始化方法