构造函数、拷贝构造函数、赋值操作符
2015-12-15 21:04
330 查看
对于这样一种类与类之间的关系,我们希望为其编写“深拷贝”。两个类的定义如下:
1. 构造函数
2. 拷贝构造函数
3. 赋值构造函数
全部代码 & 测试用例
View Code
内存中变量地址
![](https://images2015.cnblogs.com/blog/528745/201512/528745-20151215220034537-1818288487.png)
p1 . _ponit 内存地址 0x002c0cb8
p2 . _point 内存地址 0x002c0cf0
p3 . _point 内存地址 0x002c0d28
(都是不相同的内存地址)
成功
class Point { int x; int y; }; class Polygon : public Shape { Point *points; };
1. 构造函数
//构造函数 Polygon(const Point &p) : _point(new Point) { this->_point->x = p.x; this->_point->y = p.y; }
2. 拷贝构造函数
//拷贝构造 Polygon(const Polygon &p) : _point(new Point) { this->_point->x = p._point->x; this->_point->y = p._point->y; }
3. 赋值构造函数
//赋值操作符 void operator= (const Polygon &rhs) { this->_point->x = rhs._point->x; this->_point->y = rhs._point->y; }
全部代码 & 测试用例
#include <iostream>
using namespace std;
struct Shape {
int no; //形状编号
};
struct Point {
int x;
int y;
Point(int x, int y) : x(x), y(y) {}
Point() = default;
};
struct Polygon :public Shape {
Point *_point;
//构造函数
Polygon(const Point &p) : _point(new Point)
{
this->_point->x = p.x;
this->_point->y = p.y;
}
//拷贝构造 Polygon(const Polygon &p) : _point(new Point) { this->_point->x = p._point->x; this->_point->y = p._point->y; }
//赋值操作符 void operator= (const Polygon &rhs) { this->_point->x = rhs._point->x; this->_point->y = rhs._point->y; }
~Polygon()
{
delete this->_point;
}
};
int main()
{
Point x1(1, 2);
Polygon p1(x1);
Polygon p2 = p1;
Polygon p3(p2);
p1 = p2;
return 0;
}
View Code
内存中变量地址
![](https://images2015.cnblogs.com/blog/528745/201512/528745-20151215220034537-1818288487.png)
p1 . _ponit 内存地址 0x002c0cb8
p2 . _point 内存地址 0x002c0cf0
p3 . _point 内存地址 0x002c0d28
(都是不相同的内存地址)
成功
相关文章推荐
- This is test
- jquery学习随笔(简单选择器)
- UVa 109 - SCUD Busters(凸包计算)
- 创建BDC(Business Data Connectivity Service)
- RFID扫描APP Android
- DefaultHttpClient is deprecated
- 实战开发经验: 如何降低CPU占用率
- Spring scope属性详解
- hdu 2086 A1 = ?
- BZOJ 1084 最大子矩阵 终于过了
- NSFileHandle 、 沙箱机制 、 属性列表
- apscheduler提示maximum错误
- linux中报错:undefined reference to
- Mapreduce工作流程
- online_judge_1100
- 将各种格式的图像转换为灰度图像
- css3媒体查询
- Scala List基本操作
- 关系型数据库和非关系型数据库
- android原生代码中的情景模式及提示音和通知