当前位置: 首页 > news >正文

无锡市锡山区建设局网站网页制作在线生成

无锡市锡山区建设局网站,网页制作在线生成,怎么样做企业网站,南坪做网站拷贝构造函数 当实例化一个新对象并使用同类型对其进行初始化时,会显式调用类的拷贝构造函数,拷贝构造函数写法:形参为const修饰的同类型类引用。拷贝构造函数有个需要注意的点,形参为何是只允许传递引用呢?原因在于若…

拷贝构造函数

当实例化一个新对象并使用同类型对其进行初始化时,会显式调用类的拷贝构造函数,拷贝构造函数写法:形参为const修饰的同类型类引用。拷贝构造函数有个需要注意的点,形参为何是只允许传递引用呢?原因在于若传递的是值,那么在调用拷贝构造函数时形参拷贝到实参时会再次发生拷贝,就会无休止的调用拷贝构造函数。

A(const A& a) { cout << "拷贝构造函数" << endl; }

赋值运算符重载

赋值运算符重载与拷贝构造函数有些相似,同样也是用同类型的对象初始化本对象。区别在于若对象已经存在,无需重新实例化时,赋值运算符操作则会调用重载函数。赋值运算符重载函数一般写成返回值为类的引用,形参为const修饰的类引用。

A& operator=(const A& a) {cout << "重载赋值运算符" << endl;return *this;
}

若没有手动实现这两个函数,在发生拷贝构造或赋值运算时,程序会调用按照位拷贝的方式生成默认函数并调用。位拷贝的方式为“浅拷贝”。若类中没有申请的内存,这种拷贝方式是安全的,但是若类中成员变量存在申请的内存char* buf = new char[1024],那么这种拷贝方式会造成指针垂挂,可能会出现二次析构等不安全的情况。这种时候就需要手动使用深拷贝的方式实现赋值函数与拷贝构造函数。

浅拷贝

浅拷贝的意思是使用指针指向同一个内存空间,类似于C++中的引用。

A* a = new A;
A* b = nullptr;
b = a;

这种方式的效果是两个指针的解引用值是一样的,不管修改哪一个,另外一个输出出来都是一样的,因为他们根本指向的是同一块地址

// 赋值操作
int main()
{int* i = new int(1);int* j;j = i;*i = 5;cout << *i << " - " << *j << endl;delete i;
}
// 拷贝构造
int main()
{int* i = new int(1);int* j = i;*i = 5;cout << *i << " - " << *j << endl;delete j;
}/*****************************************
* 结果为 5 - 5
* /

深拷贝

深拷贝的意思是重新申请一份内存,然后将原内存的数据存入到新内存中,这样两份副本是完全独立的,互不影响的

int main()
{int* i = new int(1);int* j = new int(*i);*i = 5;cout << *i << " - " << *j << endl;delete i;delete j;
}

总结

那么在类中若是存在指针的情况下,尽可能都手动实现赋值函数和拷贝构造函数,并使用深拷贝的方式去实现

class A {
public:A(int i) { Pi = new int(i); }~A() { if (Pi) delete Pi; }A(const A& a) {if (Pi)delete Pi;Pi = new int(*a.Pi);}A& operator=(const A& a) {if (this != &a){if (Pi)delete Pi;Pi = new int(*a.Pi);}return *this;}int* Pi = nullptr;
};int main()
{A a(0);A b = a;A c(0);c = a;*a.Pi = 5;cout << *a.Pi << " - " << *b.Pi << " - " << *c.Pi << endl;
}/* 输出为: 5 - 0 - 0 */
http://www.hkea.cn/news/112052/

相关文章:

  • 后台网站开发文档下载班级优化大师app
  • 辛集城乡建设管理局网站网络营销网络推广
  • 阿里云部署一个自己做的网站吗电商网站搭建
  • 免费汽车租赁网站模板网站域名解析ip查询
  • 企业解决方案官网国内seo排名分析主要针对百度
  • 变态版手游石景山区百科seo
  • 阿里云控制台登录入口seo矩阵培训
  • wordpress苗木模板网站搜索排优化怎么做
  • 网站图片引导页怎么做重庆seo招聘
  • 如何做属于自己的领券网站郑州百度网站优化排名
  • 建设银行益阳市分行桃江支行网站公司页面设计
  • vps 网站上传网站seo优化是什么意思
  • wordpress cos腾讯云seo网站优化收藏
  • 鹤岗商城网站建设免费域名申请
  • 江苏三个地方疫情严重抖音视频排名优化
  • 竞价排名广告东莞关键词排名快速优化
  • 做视频网站要什么格式好网络营销公司怎么注册
  • 企业专业网站建设快速网站搭建
  • 武威建设网站的网站google谷歌搜索
  • 长沙公司做网站多少钱推广平台怎么做
  • 现在大家做电商网站用什么源码营销策略都有哪些
  • 可以做试卷的网站英语怎么说seo关键词排名优化系统源码
  • 网站怎么设置支付功能企业网站的主要类型有
  • 成都圣都装饰装修公司北京搜索优化排名公司
  • 境外建设网站贴吧互联网域名注册查询
  • 广州建站工作室淘客推广怎么做
  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告