假设我有这个功能:
void my_test()
{
A a1 = A_factory_func();
A a2(A_factory_func());
double b1 = 0.5;
double b2(0.5);
A c1;
A c2 = A();
A c3(A());
}
Run Code Online (Sandbox Code Playgroud)
在每个分组中,这些陈述是否相同?或者在某些初始化中是否有额外的(可能是可优化的)副本?
我见过有人说过这两件事.请引用文字作为证据.还请添加其他案例.
两者之间有什么区别吗?
std::string s1("foo");
Run Code Online (Sandbox Code Playgroud)
和
std::string s2 = "foo";
Run Code Online (Sandbox Code Playgroud)
?
INITIALIZATION和ASSIGNMENT之间的区别究竟是什么?
PS:如果可能的话,请特别提供C和C++中的示例.
实际上,我对这些陈述感到困惑......
C++提供了另一种初始化成员变量的方法,它允许我们在创建成员变量时而不是之后初始化成员变量.这是通过使用初始化列表完成的.使用初始化列表与执行隐式赋值非常相似.