关于类中的成员函数和非成员函数(即友元函数)的选择
来源:互联网 发布:防御矩阵异性入侵 编辑:程序博客网 时间:2024/05/16 19:54
在定义类的成员函数时,经常遇到运算符重载的情况,往往在这时候,不知道应该用友元函数还是成员函数,其实这很好分辨:
运算符的两边各有一个参数,如果在运算符的左边是一个对象的话,那么,成员函数就可以了,例如A*1.2,但是如果这个1.2在运算符的左边,即1.2*A,那么这时候就不能用成员函数了,因为成员函数往往只有一个参数,另一个参数被隐式地传递的调用对象,那么,他返回的也就是一个成员,而1.2仅仅是一个参数,不是对象,这时候就要用友原函数。
#ifndef HEAD4_H_#define HEAD4_H_class Time{private:int hours;int minutes;public:Time();Time(int h,int m);void AddMin(int m);void AddHr(int h);void Reset(int h,int m);friend Time operator+(const Time &t,const Time &y);friend Time operator-(const Time &t,const Time &y);friend Time operator*(double m,const Time &t);friend Time operator*(const Time &t,double m);friend std::ostream&operator<<(std::ostream &os,const Time &t);};#endif
Time operator*(const Time &t,double m){Time temp;double total=t.hours*60+t.minutes;total=total*m;temp.hours=total/60;temp.minutes=int(total)%60;return temp;}Time operator*(double m,const Time &t){return t*m;}然而,如果此时不是友原函数的话,那么就只有一个参数:
Time Time::operator*(double m)const{ Time result; ...... return result;}
另外,非成员函数上不允许使用类型限定符,例如:
Time operator+(const Time &t,const Time &y)const//这个最后的const是不允许的。
0 0
- 关于类中的成员函数和非成员函数(即友元函数)的选择
- 什么是类的成员函数和非成员函数
- 关于编译器对c++ 类静态成员、静态成员函数、非静态成员函数的处理
- 静态成员函数和非静态成员函数的区别?
- 静态成员函数和非静态成员函数的区别?
- 静态成员函数和非静态成员函数的区别
- C++类的成员函数、非成员函数和友元函数
- 类中的静态成员函数访问非静态成员变量
- 分清成员函数,非成员函数和友元函数
- 成员函数 非成员函数和友元函数
- 成员函数 非成员函数和友元函数
- 成员函数、非成员函数和友元函数介绍
- 分清成员函数,非成员函数和友元函数
- 成员函数,非成员函数和友元函数
- 分清成员函数,非成员函数和友元函数
- 4.1 成员函数的各种调用方式(静态成员函数,非静态成员函数,虚拟成员函数)
- 关于C++中的静态成员和静态成员函数
- 类中的三种函数(普通成员函数、静态成员函数、COSNT成员函数)总结
- 《Pro Android Graphics》读书笔记之第五节
- 每天学习一点编程(11)(输出一个序列的所有子集)
- C\C++代码优化的27个建议
- 第十三周 项目2 圆的关系
- 做好长尾关键词排名 流量杠杠滴
- 关于类中的成员函数和非成员函数(即友元函数)的选择
- leetcode - Linked List Cycle
- Android手机连接服务器端实现登陆
- 在宁阳信息港注册会员完全免费,记下地址和这篇文章方便以后使用
- android gravity 详解
- C#中委托与事件
- GMF+Teneo
- POJ 2187 Beauty Contest 构造凸包 + 旋转卡壳
- ACM作业 找回手机