c++ 中 拷贝构造函数 和 operator= 函数 的使用区别

拷贝构造函数(Copy Constructor)和赋值运算符重载函数(operator=)是用于在C++中处理对象复制的两个不同概念,它们有以下区别:

用途:

拷贝构造函数:它用于在创建一个新对象时,将一个已有对象的值复制到新对象中。通常在对象的初始化过程中调用,如对象声明时的初始化、函数参数传递(按值传递)或返回对象(按值返回)等情况。
赋值运算符重载函数:它用于将一个已有对象的值赋给另一个已有对象。通常在已存在的对象上调用,使用赋值运算符(=)来实现对象之间的值复制。
调用时机:

拷贝构造函数:会在以下情况下被调用:
对象声明并初始化时。
通过值传递的方式将对象作为函数参数传递给函数。
通过值返回的方式从函数中返回一个对象。
在某些标准库容器的操作中,如插入元素时。
赋值运算符重载函数:会在以下情况下被调用:
使用赋值运算符(=)将一个已有对象的值赋给另一个已有对象。
在类的对象之间进行赋值操作。
下面是一个简单示例,演示了拷贝构造函数和赋值运算符重载函数的使用:

class MyClass {
public:
    int value;

    // 拷贝构造函数
    MyClass(const MyClass& other) {
        value = other.value;
    }

    // 赋值运算符重载函数
    MyClass& operator=(const MyClass& other) {
        if (this != &other) {
            value = other.value;
        }
        return *this;
    }
};

int main() {
    MyClass obj1(42);
    MyClass obj2(obj1); // 调用拷贝构造函数
    MyClass obj3 = obj1; // 也调用拷贝构造函数

    MyClass obj4(10);
    obj4 = obj1; // 调用赋值运算符重载函数

    return 0;
}

总结一下,拷贝构造函数用于创建一个新对象并将已有对象的值复制到新对象中,而赋值运算符重载函数用于将一个已有对象的值赋给另一个已有对象。这两个函数在不同的上下文和使用场景中起作用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wniuniu_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值