复制构造器和=运算符重载

复制也是用的=运算符,那么什么时候是复制构造器,什么适合是调用运算符=重载?

用其他对象定义新对象的时候是复制构造器,如下:

    A a2(a1);
    A a3 = a2;

在已经定义好后,用=进行赋值的是调用运算符=重载

class A {
private:
    int m_elem;

public:
    A() {
        std::cout << "This is construction!" << std::endl;
    }

    A(const A& others) {
        std::cout << "This is copy construction!" << std::endl;
    }

    void operator=(const A& others) {
        std::cout << "This is operator == override!" << std::endl;
    }

};

int main()
{
    A a1; //This is construction!
    A a2(a1); //This is copy construction!
    A a3 = a2; //This is copy construction!
    a1 = a2; //This is operator == override!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++语言的一个很有意思的特性就是除了支持函数重载外还支持运算符重载,原因就是在C++看来运算符也算是一种函数。比...
    欧阳大哥2013阅读 2,722评论 0 8
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,860评论 2 9
  • C++运算符重载-上篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 2,323评论 0 51
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,478评论 0 49
  • 秋日里,艳阳高照。躺在阳光斑驳的木床上闻着奶奶熟悉的香味。微风吹拂着窗帘渐渐撩动,鱼缸里的加氧泵一直咕噜着气泡...
    野不言阅读 233评论 0 0