自增自减运算符的重载(强制类型转换运算符重载)
前置运算符重载为一元运算符,后置运算符重载为二元运算符。
Operator int() { return n; }
int作为一个强制类型转换运算符被重载,
Demo s;
(int)s; //等效于s.int();
强制类型转换运算符重载时,
- 不能写返回值类型
- 实际上其返回值类型----强制类型转换运算符代表的类型
- 只能作为成员函数,不能作为友元函数或普通函数
- 转换构造函数和类型转换运算符有一个共同的功能:当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量)。
运算符重载的注意事项
- C++不允许定义新的运算符
- 重载后运算符的含义应该符合日常习惯
- 运算符重载不改变运算符的优先级
- 以下运算符不能被重载:“.”,“.*”,“::”,“?:”,sizeof
- 重载运算符(),[],->或者赋值运算符=时,重载函数必须声明为类的成员函数。
#include <iostream> using namespace std; class Ctype { private: int n; public: Ctype(int m) :n(m) {}; Ctype operator ++(int); Ctype operator ++(); operator int(); }; Ctype Ctype::operator++(int) { Ctype tmp(*this); n++; return (tmp); } Ctype Ctype::operator++() { n++; return (*this); } Ctype::operator int() { return n; } int main() { Ctype c(6); cout << c++ << endl; cout << c << endl; cout << ++c << endl; return 0; }
参考链接:
https://www.coursera.org/learn/cpp-chengxu-sheji
本人博客已迁往 https://chenlongxiabc.github.io 欢迎访问。
博客内容均为自己编写,其中参考了相关内容。若有侵权他人请联系我,并对此表示歉意。若要转载或是其他用途,请联系我。我的邮箱diegefulan@hotmail.com