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

条款26: 当心潜在的歧义

即使cpp支持潜在二义性/歧义,也不要使用。

c 复制代码
void f(int);
void f(char);
double d = 6.02;
f(d); //需要明确转换

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

c 复制代码
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++编译器自动生成,需要明确禁止生成。

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

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

相关推荐
橘子师兄1 天前
C++AI大模型接入SDK—快速上手
开发语言·c++·人工智能
被星1砸昏头1 天前
C++与Node.js集成
开发语言·c++·算法
程序员zgh1 天前
C++ 纯虚函数 — 抽象接口
c语言·开发语言·c++·经验分享·笔记·接口隔离原则
wen__xvn1 天前
码蹄杯刷题
数据结构·c++·算法
郝学胜-神的一滴1 天前
深入浅出网络协议:从OSI七层到TCP/IP五层模型全解析
开发语言·网络·c++·网络协议·tcp/ip·程序人生
jojo_zjx1 天前
GESP 25年12月1级 手机电量显示
c++
程序员zgh1 天前
C语言 弱定义机制 解读
c语言·开发语言·c++
FMRbpm1 天前
树的练习7--------LCR 052.递增顺序搜索树
数据结构·c++·算法·leetcode·深度优先·新手入门
余衫马1 天前
Qt for Python:PySide6 入门指南(中篇)
开发语言·c++·python·qt
明洞日记1 天前
【软考每日一练007】位图计算与内存管理深度全解
c++·算法·ai·操作系统·进程