您的位置:首页 > 运维架构

复制构造函数和operator= 的区别

2016-03-28 14:19 302 查看
类中,复制构造函数和operator= 的区别:调用时机不同

复制构造函数调用时机:该类对象初始化

operator= 调用时机:该类对象被赋值 =

初始化和复制赋值都会导致对象被复制。

注意:两个函数都应该用const,以保护传进来的参数不被更改。

代码示例:

#include <iostream>

class Base
{
public:
Base()
{
std::cout<<"constructor"<<std::endl;
}

Base(const Base ©)
{
std::cout<<"copy constructor"<<std::endl;
}

const Base &operator=(Base ©)
{
std::cout<<"operator="<<std::endl;
return *this;
}

};

int main(int argc, const char * argv[])
{

Base a;     // 1
Base b = a; // 2
Base c(a);  // 3

Base d;     // 4
d = a;      // 5

return 0;
}


结果:

1:constructor

2:copy constructor

3:copy constructor

4:copy constructor

5:operator=
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: