用一个例子来理解c++中的重载
来源:互联网 发布:java线程和进程区别 编辑:程序博客网 时间:2024/06/05 05:56
格式:operatorop(argument-list)
例:operator+(),表明重载“+”运算符,其中op必须为C++运算符,如@不是c++中的符号,则不能定义为重载。
下面用两个时间的类对象来说明重载“+”运算符:
class Time{private:int hours;int minutes;public:Time();Time(int h, int m);~Time();void addMin(int m);void addHou(int h);//Time sumTime(const Time & t)const;Time operator+(const Time & t)const;//重载+运算符,其实就是把类成员函数名sumTime换成operator+来完成相同的功能void showTime()const;};Time::Time(){hours = minutes = 0;}Time::Time(int h, int m){hours = h;minutes = m;}Time::~Time(){;}void Time::addMin(int m){hours = hours + m / 60;minutes = (m + minutes) % 60;}void Time::addHou(int h){hours = hours + h;}//Time Time::sumTime(const Time & t)const//Time Time::operator+(const Time & t)const//同样在函数定义处也要换成operator+{Time sum;sum.minutes = t.minutes + minutes;sum.hours = t.hours + hours + sum.minutes/60;sum.minutes %= 60;return sum;}void Time::showTime()const{std::cout << hours << ":" << minutes << std::endl;}int main(){using std::cout;using std::endl;Time planning;Time colding(2, 56);Time fixing(11, 36);Time total;cout << "planning time:" ;planning.showTime();cout << endl;cout << "colding time:";colding.showTime();cout << endl;cout << "fixing time:";fixing.showTime();cout << endl;total = colding.sumTime(fixing);total= colding + fixing;//完成相同的功能cout << "colding.sumTime(fixing):";total.showTime();cout << endl;system("pause");return 0;}
必须要注意的是重载后的运算符必须至少有一个操作数是用户定义的类型,如上使用+运算符时,必须要含有Time类类型的对象。
并非每个运算符都能重载,如sizeof运算符、成员运算符“·”等都不能重载,此处不细说
阅读全文
0 0
- 用一个例子来理解c++中的重载
- 用一个例子来理解MATLAB中的cell,理解{}和()的区别
- python 如何重载模块,用一个简单的例子来解释
- 一个简单例子理解C语言指针
- 用一个例子来说明程序开发过程中的粒度和弹性控制
- 用一个例子来说明程序开发过程中的粒度和弹性控制
- 用一个例子来学习HTML语法
- 一个用C来模拟类的多态行为的例子
- 从一个例子来复习下计算机中的负数
- operator<<的重载,一个例子
- JAVA 中的 函数重载例子
- “一句话+一个例子“理解Java中的代理原理
- 小例子来理解MapReduce
- C 语言中的 offsetof 意义及理解 使用例子
- ARtoolkit例子中的交互代码paddleInteractionTest.c理解
- Qt多线程学习-用例子来理解多线程
- Qt多线程学习-用例子来理解多线程
- Qt多线程学习-用例子来理解多线程(转)
- ListView使用itemType遇到的问题
- 根据xsl模板及xml数据文件生成pdf(文字内容复制不乱码)
- mybatis动态sql中的trim标签的使用
- hudson maven svn 搭建+自动部署
- iOS 禁止侧滑手势返回上级
- 用一个例子来理解c++中的重载
- Android---网络编程之简易新闻客户端
- OpenCV问题集锦,图片显示不出来,WaitKey(0),imread()不能读图片,未经处理的异常,等问题集合
- log4j的使用
- Gradle动态参数打包APK
- spring集成quartz:定时任务的实现
- vim多窗口、多文件
- Perl文件I/O
- 自学PHP与培训PHP的到底有多大的差距?