博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中的复制、赋值、析构
阅读量:5896 次
发布时间:2019-06-19

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

一直对C++的复制(Copy)、赋值(Assign)操作比较困惑,现在看书的时候看到了,就把它顺便记下来。

一、什么时候触发

一下代码可以熟悉什么时候触发复制操作,以及什么时候触发赋值操作:

// testCopy.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include 
#include
using namespace std;class testCopy{public: testCopy():a(0) { cout<<"enter constructor"<

 

输出结果如下:

t1enter constructort2enter copy constructort3enter constructorenter operator=f1enter copy constructorenter f1enter destructorf2enter constructorenter f2enter constructorenter copy constructorenter destructorenter operator=enter destructorendenter destructorenter destructorenter destructorenter destructor

 

二、复制、赋值、析构函数重写的必要性

上面的例子不足以说明重写复制、赋值、析构的重要性,当类中需要动态分配内存时,重要性就体现出来了:

class testCopy2{public:    testCopy2():buf(new char[128])    {        cout<<"enter constructor"<

三、一些规则

1. 如果一个类需要一个析构函数,那么它一定需要重载复制和赋值操作。

2. 如果一个类需要重载复制操作,那么它一定需要重载赋值操作,反之同成立。

3. 如果一个类需要重载复制和赋值操作,但是不一定需要重载析构操作。

四、相关下载

转载于:https://www.cnblogs.com/Reyzal/p/5457485.html

你可能感兴趣的文章
面向对象 tab切换
查看>>
记一次被“骗”去创业的经历
查看>>
福大软工 · BETA 版冲刺前准备(团队)
查看>>
VS2010 中快速生成代码
查看>>
网络流最经典的入门题 各种网络流算法都能AC。 poj 1273 Drainage Ditches
查看>>
iOS开发UI篇—自定义layer
查看>>
Java模拟Windows的Event
查看>>
vsftp.conf
查看>>
创建数据库的SQL语句
查看>>
同一局域网环境下的arp欺骗和中间人攻击(mac)
查看>>
知识巩固——面试遇到的
查看>>
视图的学习总结
查看>>
面试题30.最小的k个数
查看>>
JavaScript数组去重的三种方法(简易)
查看>>
十个提示让你成为明星程序员
查看>>
Windows 通用应用尝试开发 “51单片机汇编”总结
查看>>
39页作业第五题
查看>>
整数中1出现的次数(从1到n整数中1出现的次数)
查看>>
linux下区域截图,快捷键设置【ubuntu 10.10】
查看>>
关于layer.alert()函数不调用
查看>>