C++ 初始化方式

        在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的构造函数有多个重载版本。当输入参数只有一个(欲赋予的字符串)的时候,使用直接初始化和拷贝初始化都可以;当输入参数有多个的时候,只能使用直接初始化的方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值