为什么在C中内置类型的初始化和赋值之间没有区别?

use*_*316 5 c c++ initialization

我正在读一本书,它说有初始化和赋值为内置型没有区别CC++,但喜欢的类型stringC++,也有区别.为什么?为什么内置类型没有区别C

Kir*_*rov 5

因为标准类型就像int没有构造函数一样.这些

int x = 123;
int y;
y = 123;
Run Code Online (Sandbox Code Playgroud)

是相同的(在开始时,y将有一些随机/垃圾值).

创建对象时将调用其构造函数.所以,例如:

std::string s = "123";
std::string y;
y = "123";
Run Code Online (Sandbox Code Playgroud)

s将被创建并立即初始化,同时y将被创建,其值将被初始化(基于std::string构造函数),之后,它们将在更改期间被更改operator=.