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

读书笔记:Effective C++ 2.0 版,条款26(歧义)、条款27(禁止部分隐式生成的函数)

条款26: 当心潜在的歧义
即使cpp支持潜在二义性/歧义,也不要使用。

void f(int);
void f(char);
double d = 6.02;
f(d); //需要明确转换

多继承充满了潜在二义性/歧义的可能。

class Base1 {public: int doIt();};
class Base2 {public: void doIt();};
class Derived: public Base1,public Base2 {...};
Derived d;
d.doIt();		// 错误!——二义
d.Base1::doIt();	// 正确, 调用Base1::doIt
d.Base2::doIt();	// 正确, 调用Base2::doIt

改变一个类成员的访问权限不应该改变程序的含义。

条款27: 如果不想使用隐式生成的函数就要显式地禁止它
operator=函数会被C++编译器自动生成,需要明确禁止生成。

template<class T>
class Array {
private: Array& operator=(const Array& rhs); // 不要定义这个函数!Array& operator=(const Array& rhs)=delete;//新版cpp语法支持 ...
};

赋值和拷贝构造函数具有行为上的相似性.

http://www.lryc.cn/news/204279.html

相关文章:

  • MySQL基本操作之数据库设计理论
  • SpringBoot的日志系统(日志分组、文件输出、滚动归档)
  • 一种基于HTTPS实现的Web账号登录Linux桌面系统的实现方案
  • 【Linux】psplash制作Linux开机动画
  • WMS透明仓库:实现仓储的全方位可视化与优化
  • 软考系统架构师知识点集锦一:系统工程与信息系统基础
  • 建筑模板常见的问题有哪些?
  • windows11录屏功能详解,记录你的精彩时刻
  • 重入漏洞Victim
  • wordpress数据库迁移Invalid default value for ‘comment_date‘
  • Xray联动RAD实现自动扫描教程
  • ES6 Proxy
  • LSKA(大可分离核注意力):重新思考CNN大核注意力设计
  • muduo源码学习base——Exception(带 stack trace 的异常基类)
  • 2023-10-24 小总结
  • 2-MySQL的基本操作记录
  • 网站页脚展示备案号并在新标签页中打开超链接
  • CentOS7 安装 nodejs
  • 工程化测试:Apollo的单元测试与集成测试指南
  • DevOps 笔记
  • 基于食肉植物优化的BP神经网络(分类应用) - 附代码
  • Docker部署SpringBoot +Vue项目流程详解(含域名 + HTTPS)
  • 需要在 MySQL 服务器中监控的重要指标
  • Hadoop之HDFS
  • 【Matlab笔记_17】查找数组中相同元素
  • 前端多媒体处理工具——ffmpeg的使用
  • Pandas 数据分析系列1--SeriesDataFrame数据结构详解
  • 【模型部署】c++部署yolov5使用openvino
  • DC-7 靶机
  • Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑