博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构造函数、拷贝构造函数、赋值操作符
阅读量:5153 次
发布时间:2019-06-13

本文共 1501 字,大约阅读时间需要 5 分钟。

  对于这样一种类与类之间的关系,我们希望为其编写“深拷贝”。两个类的定义如下:

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 
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

 

  内存中变量地址

 

  p1 . _ponit 内存地址 0x002c0cb8

  p2 . _point 内存地址 0x002c0cf0

  p3 . _point 内存地址 0x002c0d28

  (都是不相同的内存地址)

 

成功

转载于:https://www.cnblogs.com/fengyubo/p/5049516.html

你可能感兴趣的文章
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
Attributes.Add用途与用法
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
海上孤独的帆
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>