我是靠谱客的博主 激动啤酒,最近开发中收集的这篇文章主要介绍运算符重载函数:友元函数 成员函数 普通函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Complex Complex::operator+(const Complex &c2){}

对于上面的+,之所以知道它为二元运算是因为 由上面的函数形式可知,这是一个成员函数,

因此隐含地有 operatpr+(Complex *this,Complex &c2) 。

用Complex Complex::operator+(Complex &c2)定义的是复数+复数;

用Complex Complex::operator+(double &d)定义的是复数+实数;

而对于Complex c4=3.14+c2来说,不管用上面的哪个函数都是不对的,因为这个表达式需要的

是实数+复数:

可以用友元函数实现Complex operator+(double &d,Complex &c){}

也可以用普通函数

但是不可以用成员函数实现!!!


运算符重载函数可以是类的成员函数:

它可以通过this指针自由访问本类的数据成员,少写一个函数的参数,但是有一个要求就是运算的第一个运算量必须是当前类的对象;


运算符重载函数也可以是类的友元函数:

如果运算符左侧的操作数属于c++标准类型(如int)或是一个其他类的对象,则运算符重载函数不能选用成员函数

为方便访问类的私有成员,声明为友元函数为佳


运算符重载函数还可以是普通函数:

但是普通函数一般不能直接访问类的私有成员



友元的使用会破坏类的封装,原则上要尽量将运算符函数作为成员函数;

一般单目运算符重载为成员函数,双目运算符重载为友元函数;

对于数学上交换律成立的运算符,应两次重载运算符:比如复数+实数;实数+复数

有的运算符必须定义为类的成员函数

如:赋值运算符,下标运算符,函数调用运算符

有的运算符则不能定义为类的成员函数

如:流插入<<   流提取>> 类型转换运算符

最后

以上就是激动啤酒为你收集整理的运算符重载函数:友元函数 成员函数 普通函数的全部内容,希望文章能够帮你解决运算符重载函数:友元函数 成员函数 普通函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部