您的位置:首页 > 其它

拷贝构造函数与重载赋值操作符

2011-08-26 10:58 260 查看
二者的根本区别:拷贝构造函数在于类的对象分配空间并初始化类对象的数据成员,用于类对象的定义;而重载赋值操作符在于给已经分配空间并初始化数据成员的类对象赋值,用于对已定义的类对象的操作(改变其内容).

#include<iostream>

using namespace std;

class ClassName;

class ClassName

{

private:

int x;

public:

ClassName(int x=1);

ClassName(const ClassName& c);

ClassName& operator = (const ClassName& g);

void print() const;

};

ClassName::ClassName(int x)

{

this->x=x;

}

ClassName::ClassName(const ClassName& c)

{

this->x=c.x;

cout<<"Copying!\n";/*调用拷贝构造函数*/

}

ClassName& ClassName::operator = (const ClassName& g)

{

if(this!=&g)

this->x=g.x;

cout<<"Giving!\n";/*调用重载赋值操作操*/

return *this;

}

void ClassName::print() const

{

cout<<x<<"\n";

}

int main()

{

ClassName c1(5);

ClassName c2=c1;/* 相当于c2(c1); 调用 Copy 构造函数,注意:这里不是重载赋值运算符= */

ClassName c3;/* 相当于c3(1); */

c3=c1; /* 重载赋值运算符= */

c3.print();

system("pause");

return 0;

}

/*运行结果:

Copying!

Giving!

5

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