在C++中,至少存在6种初始化形式,其中不带“=”号的初始化只能用于初始化,不能用于赋值,例如:
int a{ 1 };
int b(1); //注意 ()不能用于类内部成员的初始化
int c = {1};
int d = int(1);
int e = 1;
int f = (1);
以上6种初始化本质上都是一样的:
int a{ 1 };
00007FF73ABE2DBD mov dword ptr [a],1
int b(1);
00007FF73ABE2DC5 mov dword ptr [b],1
int c = {1};
00007FF73ABE2DCD mov dword ptr [c],1
int d = int(1);
00007FF73ABE2DD5 mov dword ptr [d],1
int e = 1;
00007FF73ABE2DDD mov dword ptr [e],1
int f = (1);
00007FF73ABE2DE5 mov dword ptr [f],1
)
但推荐使用{}的方式,这种方式是安全的,不进行隐匿转换,例如:
int m{1.2}; //编译时会提示错误