C++运算符重载函数作为类成员函数

1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同。
因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才有意义。
1.2将双目运算符重载为友元函数时,在形参表列中必须有两个参数,不能省略,形参的顺序任意。
1.3在使用运算表达式的时候,运算符左侧与函数第一个参数对应,右侧与第二个参数对应。
1.4C++规定,有的运算符(赋值运算符,下标运算符,函数调用运算符)必须定义为类的成员函数,有的运算符则不能定义为类的成员函数(如流插入“<<”和流提取“>>”,类型转换运算符)
1.5一般将单目运算符重载为成员函数,将双目运算符重载为友元函数。
1.6有的编译系统不能把成员函数重载为友元函数,如VC++ 6.0这时把#include <iostream>改成#include<iostream.h>
1.7一个运用重载的例子:
#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(double r,double i):real(r),image(i){}
    Complex(){real=0;image=0;}
    Complex operator+(Complex &);
    friend Complex operator+(int i,Complex &c);
    friend Complex operator+(Complex &c,int i);
    void display();
private:
    double image,real;
};
Complex Complex::operator+(Complex &c)
{
    Complex c1;
    c1.image=image+c.image;
    c1.real=real+c.real;
    return c1;
}
Complex operator+(int i,Complex &c)
{
    return Complex(i+c.real,c.image);
}
Complex operator+(Complex &c,int i)
{
    return Complex(i+c.real,c.image);
}
void Complex::display()
{
    cout << "(" << real << "," << image << ")" << endl;
}
int main()
{
    Complex c1(1,2);
    Complex c2(2,3);
    Complex c3=c1+c2;
    Complex c4=1+c1;
    Complex c5=c1+1;
    c1.display();
    c2.display();
    c3.display();
    c4.display();
    c5.display();
    return 0;
}

C++运算符重载函数作为类成员函数和友元函数相关推荐

  1. 10.2 运算符重载函数作为类成员函数和友元函数

    Complex operator+(Complex &c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; ...

  2. 【C/C++学院】(8)全局函数和类成员函数转化/友元/操作符重载

    1.全局函数和类成员函数转化 全局函数和成员函数的相互转化:只需要修改一个指向本类的this指针: #include <iostream> using namespace std;clas ...

  3. 将类的成员函数作为回调函数(外一篇:友元函数)

    转自:http://blog.csdn.net/xylary/article/details/1548596 将类成员函数用做C回调函数 提出问题:  回调函数是基于C编程的Windows SDK的技 ...

  4. C++(16)--运算符重载(自定义Integer类)

    运算符重载 1.运算符重载--重点 2.友元函数--难点(流运算符重载) <老九学堂C++课程><C++ primer>学习笔记.<老九学堂C++课程>详情请到B站 ...

  5. 深入篇【C++】类与对象:友元函数与友元类

    深入篇[C++]类与对象:友元函数与友元类 ①.提出问题:重载operator<< ②.解决问题:友元 Ⅰ.友元函数 [特点] Ⅱ.友元类 [特点] ③.总结问题 ①.提出问题:重载ope ...

  6. 当类模板遇到了友元函数

    在我学习数据结构的时候,选用了<数据结构(用面向对象方法与C++语言描述)>殷人昆 编著 这本教材.这本书代码较老有一些错误,好多是无法直接在新版本编译器下实现的. 当时我C++模板学的不 ...

  7. C++ 函数指针 类成员函数指针

    一.函数指针 函数存放在内存的代码区域内,它们同样有地址.如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址. 1.函数 ...

  8. c++ 线程函数(类成员函数作为线程函数使用)

    C++类成员函数使用时,都会隐式传递一个this指针给该函数,this指针指向该类的对象.函数体可以通过显示调用该指针或直接访问类内成员. 回调函数是通过指针调用的函数,最常使用的回调函数就是在创建线 ...

  9. 3-8:类与对象下篇——友元函数、友元类和内部类

    文章目录 一:友元函数 (1)友元函数 (2)友元类 二:内部类 一:友元函数 C++运算符重载为我们带来了极大的便利.因此,对于日期类这样的自定义类型,就可以重载运算符<<,然后使用co ...

最新文章

  1. Redis亿级数据过滤和布隆过滤器
  2. (正确姿势)centos7 如何从U盘拷贝文件
  3. mysql的联合查询差集_MySQL实现差集(Minus)和交集(Intersect)
  4. 非二进制字符串数据:CHAR,VARCHAR,TEXT
  5. rowspan和colspan用法详解
  6. append有时加载不出来_关于艾拉浏览器看漫画,有时加载慢的解决方法,你知道了吗...
  7. c#子线程和主线程创建窗体时顶层显示的区别
  8. c++语言get:_用C++给R语言加速:Rcpp简单用法
  9. python fun函数、求4x4整型数组的主对角线元素的和_python中多维数组中列major的numpy整形...
  10. Linux下的设计模式——委派模式(Delegate Pattern)深入浅出【建议新手收藏】
  11. 那些年做的xmind思维导图
  12. 使用Intent启动常用的应用与服务
  13. bzoj1692 [Usaco2007 Dec]队列变换
  14. 世界三大粮食·水稻稻米十大生产国 国稻种芯百团计划行动
  15. Adding Animations之Zooming a View
  16. 基于HTML5+CSS3的网页设计与实现
  17. Zotero+OneDrive多平台在线同步完美解决方案(一):安装配置、云端同步文献数据
  18. 随机过程、马尔可夫链 详解
  19. 《java从入门到放弃》_《Java从入门到放弃》JavaSE入门篇:JDBC(入门版)
  20. 读书笔记-人月神话19

热门文章

  1. SpringBoot默认日志logback配置解析
  2. 关于Java成员变量、局部变量、方法,在JVM的内存空间分配
  3. SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别
  4. 解决SVN提交和更新代码冲突?
  5. asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0
  6. java有几种变量_java有多少种变量?java类变量怎么使用?
  7. from mysql partition select_玩转select条件查询,避免踩坑
  8. vs 2015 oracle,VS2015连接oracle11g出现异常
  9. 无法从“cstring”转换为“lpcstr”_U盘重装系统后,无法使用?
  10. js中for循环调用回调函数,一直循环最后一个