一、不能被重载的 C++ 运算符
不能被重载的操作符
" . " 成员运算符
" .* " 成员指针运算符
" :: " 域运算符
" sizeof " 长度运算符
" ?: " 条件运算符
二、可以被重载的 C++ 运算符(图片来自 Beginning C++17 )
英文含义:
如果是 NO 说明只能使用成员函数类型,YES 说明成员函数和非成员函数都可以, ONLY 只能使用非成员函数实现
成员函数:是指写在类或则结构体内的函数
class A { void getA();}
inline void getB() {}
其中 getA() 是 A 的成员函数, getB() 就是 A 的非成员函数
三、成员和非成员函数的选择
根据书本内容来看,是如非必要尽可能使用成员函数来重载操作函数,这样就可以直接使用操作函数更加合理
书中推荐使用非成员函数的两种情况
- 基本类型或与您所使用的类不同
- 需要对二进制运算符进行隐式转换时
情况一
ostream& operator<<(ostream& stream, const Box& box); // you cannot add ostream members
情况二 隐式转化 class + num / num + class 及相关对象
bool operator<(double value, const Box& box); // double cannot have member functions