C++ 初始化方式

C++ 初始化方式,第1张

        在C++语言中,初始化和赋值是两种不同的概念,但是经常可以看到使用赋值运算符 = 来进行初始化,如:string str = "hello";这其实是使用了拷贝初始化。本文将以string类为例子,对各种初始化方式进行一个总结。

        下表为string类的各种初始化方式[引自:C++ Primer (第五版)]

        

1. 默认初始化

        表中string类的第一种初始化方式称为默认初始化,用户没有给string实例s1一个初值,s1将是一个空string。

2. 拷贝初始化

        表中第三、五行的初始化方式(使用 =)都属于拷贝初始化,第三行将s1的内容拷贝到s2中,第五行将字面值"value"拷贝到s3中。这实际上是调用了string类的operator =,并且发生了隐式的类型转换。

3.直接初始化

        表中第二、四、六行的初始化方式都属于直接初始化,第二行将s2拷贝s1中,第四行将字面值"value"(不包括末尾的空字符)拷贝到s3中。

        需要注意的是第六行,第六行将s4初始化为由连续n个字符c组成的串,这使用了不止一个参数(例子中使用了n和‘c’)。直接初始化的本质是调用构造函数,string的构造函数有多个重载版本。当输入参数只有一个(欲赋予的字符串)的时候,使用直接初始化和拷贝初始化都可以;当输入参数有多个的时候,只能使用直接初始化的方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/738028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存