博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
effective c++ 条款12 赋值对象时勿忘其每一个成员
阅读量:7126 次
发布时间:2019-06-28

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

当我们自己为class设计 copy构造函数和copy assignment操作符时,如果我们漏掉一个成员变量时,编译器并不会友好的告诉你,当然有时候我们也是故意这样做。当我们担起“为派生类写copy 函数”时责任重大,必须也要小心的复制其base class部分 如下:

 

class Customer {};class PriorityCustomer:public Customer{public :      PriorityCustomer(const PriorityCustomer& rhs);      PriorityCustomer& operator= (const PriorityCustomer& rhs);private:    int priority;}PriorityCustomer::PriorityCustomer(const PriorityCustomer& rhs):Customer(rhs),  //调用基类的copy构造函数priority(rhs.priority){    }PriorityCustomer& PriorityCustomer::operator=(const PriorityCustomer& rhs){    Customer::operator=(rhs);    priority = rhs.priority;    return *this;}

由于copy构造函数和 copy assignment 函数很相似,难免不让我们产生互相调用对方的想法,所以我们需要澄清两点:

1.在copy assignment中调用copy构造函数是不合法的因为我们试图创建已经存在的对象。

2.相反在copy 构造函数里调用copy assignment也是不合法的,因为我们试图给没有初始化的变量赋值。。

 

 

 

转载地址:http://qjhel.baihongyu.com/

你可能感兴趣的文章
spring boot项目打包成war并在tomcat上运行的步骤
查看>>
Node.js---01、初识NodeJS和Node.js的HTTP服务器搭建
查看>>
分享聚能聊"向代码致敬,寻找你的第83行"话题评论截图,得礼品咯!
查看>>
liunx 命令总结
查看>>
redis,Linux搭建
查看>>
门面模式
查看>>
预览文章: android使用webview时按后退退出的问题
查看>>
5月31日云栖精选夜读丨视频编辑,4k播放,3D游戏, 阿里云图形工作站,了解一下?...
查看>>
性能优化(JVM优化)
查看>>
域名重定向、用户认证
查看>>
java各种时间类型之间的转换
查看>>
【转】简单记录在linux(centos)系统安装nginx教程
查看>>
linux各个发行版本对比与简介
查看>>
java多线程的一些问题
查看>>
一分钟入门Dubbo
查看>>
spring源码解析@Value
查看>>
The word 'powermock' is not correctly spelled
查看>>
JSP笔记——用eclipse创建简单JavaWeb
查看>>
LVS DR模式搭建 和 keepalived + LVS
查看>>
线性回归—求解介绍及回归扩展
查看>>