陈奇网络工作室

C11初始值{}与()的差异

系统运输

#include stdio.h

#include stdlib.h

using namespace std;

/*

a1类对象成员变量的默认值;

*//B1初始值列std:initializer_list

* B2使用初始值列initializer_list

*

*

*/

class Hello{

char* hello=0; //A1类目标成员变量的默认值;

公共:

~Hello (;

Hello(Constchar*h );

Hello(Constchar*h,const char* j );

hello ( STD: initializer _ list char *; //B1初始值列

Hello(ConstHelloobj );

(;

Hello:Hello(ConstHelloobj ) )。

{

cout call copy constructor endl;

hello=strdup(obj.hello );

}

#if 1

Hello:Hello(Constchar*h ) ) ) ) ) ) ) ) ) ) ) char * h ) ) ) ) ) char ) ) )。

{

hello=strdup(h;

cout __func__endl;

}

Hello:Hello(Constchar*h,const char* j ) ) ) ) ) )。

{

hello=strdup(h;

cout _ _ func _:_ _ line _ _ hello ( char * h,char* j ) endl;

}

hello: hello ( STD: initializer _ list char * vals ) ) ) ) ) ) ) ) ) ) ) )0) 0

{

char*x=(char* ) vals.begin );

hello=strdup(x;

cout _ _ func _:_ _ line _ _ hello ( STD: initializer _ listconstchar * ) endl;

}

#endif

#if 1

Hello:~Hello ( ) )。

{

if(this-Hello ) )。

自由( this-hello );

}

#endif

int main ( ) )

{

int a{0};

intB(0;

//int c{0.3}; 错误不能变窄

intd(0.3;

HelloH1(H1,H1 );

Hello H2{H2,H2}; //B2使用初始值列initializer_list

Hello H3{H2,H2,XX}; //使用初始值列initializer_list

返回0;

}

总结:

intb(1.4 )可以进行模拟化和类型转换。 不能{}。

初始化用户定义的类对象时,{}优先使用initializer_list的构造函数。

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3