//问:C++语言有几种初始化方式?答:默认初始化、直接初始化、拷贝初始化、列表初始化。
//问:如何区分直接初始化和拷贝初始化?答:是否使用等号。
//问:初始化std::string对象有哪些方式?答:如下。
//列表初始化用于内置类型的变量时,如果初始值存在丢失信息的风险,编译器将报错。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[])
{
//默认初始化
string s1;//s1是一个空串。
//直接初始化
string s2("ab");//问:字符串字面值“ab"最后的空字符'\0'是否会被拷贝到s2中?答:不会。
string s3(3, 'g');
string s4(s3);
//拷贝初始化
string s5 = "cd";
string s6 = s5;
//列表初始化,即用花括号来初始化变量。在C++11新标准下,得到了全面应用。
string s7{"ef"};
string s8{s7};
//列表初始化的额外好处
double a = 3.14;
//int b{a};//报错
//int c = {a};//报错
int d(a);//不报错
int e = a;//不报错
cout << s1 << endl << s2 << endl << s3 << endl << s4 << endl << s5 << endl
<< s6 << endl << s7 << endl << s8 << endl;
return 0;
}
输出如下
ab
ggg
ggg
cd
cd
ef
ef
Program ended with exit code: 0
网友评论