可能重复:
复制初始化和直接初始化在 C++ 中有区别吗?
Class A
{
public:
//some member function call
private:
int x;
char a;
};
int main()
{
A a;
A b;
}
嗨,当我调用或初始化上述类的对象时,你能告诉我这些之间的区别吗
A a(b);
A a=b;
a=b;
可能重复:
复制初始化和直接初始化在 C++ 中有区别吗?
Class A
{
public:
//some member function call
private:
int x;
char a;
};
int main()
{
A a;
A b;
}
嗨,当我调用或初始化上述类的对象时,你能告诉我这些之间的区别吗
A a(b);
A a=b;
a=b;
前 2 行调用复制构造函数,因为正在构造对象。最后一行将调用等号运算符来执行赋值。
由于您的类没有任何显式复制构造函数,所有上述语句都会导致浅拷贝。
如果您声明了一个复制构造函数并重载了 = 运算符,那么
A a(b) 和 A a= b 将导致调用复制构造函数和
a= b 将导致调用 = 重载运算符
阅读本文以获得更多理解