c++ - 作为复制构造函数的赋值运算符

标签 c++

赋值运算符可用于将一个对象的值复制到另一个对象 而不是使用复制构造函数,那么为什么我们需要一个复制构造函数?

class example  
{
    int data;
public:
    example()
    {
    }

    example(int x)
    {
        data = x;
    }
};

int main()
{
    example a(50);
    example a(b);
    //same can be done with the assignment operator
    //b = a;
    return 0;
}

最佳答案

因为在调用复制构造函数时,被复制到的对象还不存在。

赋值运算符将另一个对象的值赋给一个确实存在的对象。

成员初始化等设备可以与复制构造函数一起使用,但在赋值时不可用。此外,可以使用复制构造函数创建 const 对象。

此外,赋值运算符通常会返回对自身的引用。

因此,复制构造函数和赋值运算符可能会使变异对象处于相同状态,但不一定必须如此。 p>

关于c++ - 作为复制构造函数的赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418966/

相关文章:

c++ - 如何在使用 WinAPI `ReadDirectoryChangesW` 时获取子目录?

c++ - ATL 安全更新破坏了 DLL 的兼容性,具体取决于旧版本

c++ - 对象的分离构造和克隆

c++ - 如何知道在每个 mdi 子窗口中打开的文件的路径?

c++ - 抽象类/接口(interface) C++

C++:这种编译时多态性技术如何称呼?有什么优点和缺点?

python - 如何从 C++ 使用 TensorFlow Estimator?

c++ - vector 引用 C++

c++ - 我如何为数组中的原子变量调用 compare_exchange_weak(0,1)?

c++ - 在 C++ 中涉及有符号和无符号类型的表达式