一、各种初始化的形式
/* 定义变量形式一:不指定初始值 */
int a; // 默认初始化
/* 定义变量形式二:指定初始值 */
int b = 1; // 拷贝初始化
int b(1); // 直接初始化
int b = {1}; // 列表初始化
int b{1}; // 列表初始化
二、默认初始化
- 定义变量时没有指定初值(此时变量被赋予了“默认值”)
内置类型:①全局变量被初始化为0,②局部变量不被初始化(值是未定义的)
类类型:①有默认构造函数则由默认构造函数初始化,②无默认构造函数同内置类型
三、拷贝初始化
- 使用等号=初始化一个变量(编译器把等号右侧的初始值拷贝到新创建的对象中去)
四、直接初始化
string s1("hello"); // 直接初始化
string s2(10, 'c'); // 直接初始化
- 直接初始化与我们类的构造函数息息相关。
五、列表初始化
int a = {10};
int a{10};
vector<int> ivec = {1, 3, 5, 7};
vector<int> ivec{1, 3, 5, 7};
- 列表初始化之所以可行,是因为我们在相应的类的构造函数中定义了该种方法。
转载于:https://www.cnblogs.com/xzxl/p/7764314.html
最后
以上就是孤独哈密瓜最近收集整理的关于默认初始化&拷贝初始化&直接初始化&值初始化&列表初始化的全部内容,更多相关默认初始化&拷贝初始化&直接初始化&值初始化&列表初始化内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复