ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – C c(3)之间有什么区别;和C c {3};什么时候实例化一个类?

2019-08-28 08:04:36  阅读:142  来源: 互联网

标签:c initialization


#include <iostream>

using namespace std;

class C{
    public: int a;
    public: C (int i){a = i ; }

};
int main()
{
    C c(3); // C c{3};
    cout<<c.a;
    return 0;
}

C c(3)之间有什么区别;和C c {3};?它们似乎与调用构造函数一样.

解决方法:

有两点不同:

>大括号初始化语法(假设列表非空)可以调用std :: initializer_list< T>构造函数,如果可能的话,将始终这样做.括号语法不会调用std :: initializer_list< T>构造函数.
>大括号初始化语法禁止缩小转换.

在您的示例中没有区别,但是:

>如果C有一个构造函数采用std :: initializer_list< int>然后C {3}将调用该构造函数,而C(3)将调用带有int的构造函数.
> C {3.14}将不会编译,因为转换正在缩小,但C(3.14)将.

标签:c,initialization
来源: https://codeday.me/bug/20190828/1749802.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有