//运算符重载的相关知识点

//重载:一名多用  自定义规则

//不可重载的运算符:    .     ::     .*       ?:      sizeof

//重载后的优先级不变 不改变结合性和所需操作数  不去创建新的运算符

//<< >>只能用全局函数重载

//= , 【】 , () , -> ,只能用成员函数重载

//c++通过一个站位参数    区分前置后置

/*

//我们试着重载一下运算符 + 号

#include <iostream>

#include <windows.h>

using namespace std;

class Complex

{

friend Complex operator +(Complex &c1, Complex &c2);

private:

int m_a;

int m_b;

public:

Complex();

Complex(int a, int b);

void print();

};

Complex::Complex()

{

m_a = 0;

m_b = 0;

}

Complex::Complex(int a, int b)

{

m_a = a;

m_b = b;

}

Complex operator +(Complex &c1, Complex &c2)

{

Complex tmp;

tmp.m_a = c1.m_a + c2.m_a;

tmp.m_b = c1.m_b + c2.m_b;

return tmp;

}

void Complex::print()

{

cout << "m_a = " << m_a << "  m_b = " << m_b << endl;

}

int main()

{

Complex c1(1, 2);

Complex c2(3, 4);

Complex c3;

c3 = c1 + c2;

c3.print();

system("pause");

return 0;

}

*/

/*

//重载<<

#include <iostream>

#include <windows.h>

using namespace std;

class Complex

{

friend ostream & operator <<(ostream &out, Complex &c);

private:

int m_a;

int m_b;

public:

Complex();

Complex(int a, int b);

void print();

};

Complex::Complex()

{

m_a = 0;

m_b = 0;

}

Complex::Complex(int a, int b)

{

m_a = a;

m_b = b;

}

void Complex::print()

{

cout << "m_a = " << m_a << "  m_b = " << m_b << endl;

}

ostream & operator << (ostream &out, Complex & c)//重载<<

{

out << "c.m_a = " << c.m_a << "  c.m_b = " << c.m_b << endl;

return out;

}

int main()

{

Complex c2(3, 4);

cout << c2 << endl;

system("pause");

return 0;

}

*/

/**/

//我们试着重载一下运算符 ++ 前置和后置

#include <iostream>

#include <windows.h>

using namespace std;

class Complex

{

friend ostream & operator <<(ostream &out, Complex &c);

private:

int m_a;

int m_b;

public:

Complex();

Complex(int a, int b);

void print();

Complex operator + (Complex& c2);

Complex operator ++(int);//后置++

Complex &operator ++();//前置++

};

Complex::Complex()

{

m_a = 0;

m_b = 0;

}

Complex::Complex(int a, int b)

{

m_a = a;

m_b = b;

}

void Complex::print()

{

cout << "m_a = " << m_a << "  m_b = " << m_b << endl;

}

ostream & operator << (ostream &out, Complex & c)//重载 <<

{

out << "c.m_a =" << c.m_a << "  c.m_b =" << c.m_b << endl;

return out;

}

Complex Complex::operator ++(int)//后置++

{

Complex c7;

c7.m_a = m_a;

c7.m_b = m_b;

m_a++;

m_b++;

return c7;

}

Complex& Complex::operator ++()//前置++

{

m_a++;

m_b++;

return *this;

}

int main()

{

Complex c1(1, 2);

cout << ++c1 << endl;

cout << c1++ << endl;

system("pause");

return 0;

}

/**/

7-26复习重载并实现重载部分符号相关推荐

  1. C++——重载运算符和重载函数

    重载运算符和重载函数 C++ 中的函数重载 C++ 中的运算符重载 C++ 一元运算符重载 C++ 二元运算符重载 C++ 关系运算符重载 C++ 输入/输出运算符重载 C++ 赋值运算符重载 C++ ...

  2. C++ 重载运算符和重载函数(一)

    C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不 ...

  3. 重载函数和重载运算符

    C++允许在同一个作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但他们的参数列表和定义(实现)不相 ...

  4. 函数重载与运算符重载

    有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字:运算符重载是指同一个运算符可以施加于不同类型的操作数上面.就是对已有的运算符重新进行定义,赋予其另一种功能,以适 ...

  5. C++重载函数和重载运算符

    函数重载 我们明白函数重载的作用就可以明白函数重载该如何写了.简单的说函数重载是为了实现某种意义上的多态,这种多态呢?简单点讲,同一个函数,传入不同的参数,有不同的表现.所以我们知道函数重载至少有两个 ...

  6. 运算符重载——函数调用运算符重载

    函数调用运算符重载: 本质上就是重载双括号() 重载后的函数称为仿函数 仿函数没有固定写法,非常灵活 代码: class MyPrint {public:void operator()(string ...

  7. 运算符重载——递增运算符重载

    目录: 运算符重载--算术运算符重载 运算符重载--递增运算符重载 运算符重载--左移运算符重载 运算符重载--赋值运算符重载 应用场景: class MyInteger { public:MyInt ...

  8. 运算符重载——左移运算符重载

    目录: 运算符重载--算术运算符重载 运算符重载--递增运算符重载 运算符重载--左移运算符重载 运算符重载--赋值运算符重载 应用场景: 可以输出自定义的数据类型信息 Person p(" ...

  9. 运算符重载——算术运算符重载

    目录: 运算符重载--算术运算符重载 运算符重载--递增运算符重载 运算符重载--左移运算符重载 运算符重载--赋值运算符重载 应用场景: Person p1(100);// p1有100元 Pers ...

  10. 面向对象编程(三):重载运算符和重载函数

    C++ 重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

最新文章

  1. Oracle感慨(转)
  2. Python程序开发——第二章 条件语句和循环语句
  3. 在 eclipse 中 设置 jvm 的 运行时目录
  4. [Unity] 使用 Visual Effect Graph 制作射击枪焰特效
  5. 如何判断一个算式是几位运算
  6. oracle数据库建语句吗,Oracle建表语句是什么_数据库
  7. Web测试和App测试区别
  8. 学生成绩管理系统(Java)
  9. 一文讲清楚【KL距离】、【torch.nn.functional.kl_div()】和【torch.nn.KLDivLoss()】的关系
  10. IP子网划分【网工复习专题】2022.5.8
  11. OSX 安装配置Maven
  12. 希望自己活成什么样的人
  13. 鹰式价差matlab,鹰式期权:什么叫铁鹰式期权组合,蝶式价差期权?
  14. 14.STC15W408AS单片机IIC驱动OLED
  15. apt-get 提示 无法解析域名“cn.archive.ubuntu.com” 的解决
  16. macbook air 卸载java,macbook air如何卸载软件 macbook air卸载软件的方法
  17. python axes get_在figu中找不到Axes实例参数
  18. 用python计算工资工资_python练习-工资计算器
  19. ligo_algo_art
  20. BZOJ 1787: [Ahoi2008]Meet 紧急集合

热门文章

  1. yum php devel_yum源里找不到 php54w-devel,求可用yum源
  2. sortable vue 排序_VUE +element el-table运用sortable 拖拽table排序,实现行排序,列排序...
  3. 阻止计算机访问注册表,电脑怎么样防止注册表被强行的篡改,保护电脑安全
  4. 两个整数百分百C语言,2011年9月份计算机二级C语言上机题库(百分百准确),,,[1]
  5. mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍
  6. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
  7. mysql 将三个月的数据导到历史表_迁移数据到历史表,减少业务表中数据压力 Mysql...
  8. mapreduce 文件可以切分吗_MapReduce的任务流程
  9. python一维平滑滤波_高斯滤波器的原理及其实现过程(附模板代码)
  10. windows共享使用linux生成的密钥