拷贝构造函数与重载赋值操作符
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
*/
#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
*/
相关文章推荐
- 关于拷贝构造函数和重载赋值操作符
- 我的学习笔记——c++拷贝构造函数,重载赋值操作符
- C++ 拷贝构造函数和重载赋值操作符相互调用分析 [转]
- c++类的拷贝构造函数、隐式转换、重载的赋值操作符的一些分析和实例
- C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
- 拷贝构造函数与重载赋值操作符的区别
- 重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。
- C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
- 拷贝构造函数中是否可以调用重载后的赋值运算操作符
- 自定义类型在使用容器存副本时需要注意重载赋值和拷贝构造函数
- C++拷贝构造函数的调用时机,如没有重载等号操作符,需重写使用深拷贝
- 拷贝构造函数与赋值操作符
- 复制构造函数与赋值操作符的重载
- 关于拷贝构造函数和为类重载“=”操作符
- 赋值操作符和拷贝构造函数
- 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
- C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数
- 子类的拷贝构造函数和赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 构造函数, 拷贝构造函数, 赋值操作重载各种情况实例演示