目录

一、operator== :等号判断重载

二、operator = : 等号赋值重载

三、operator != : 不等于重载

四、operator> : 大于号 或者 小于号 重载

五、operator << :输入重定向重载

六、operator + :加号重载

七、operator ++ :++重载

八、operator -- :--重载减减


有时候为了方便我们可能需要给类有各种额外的操作, 这个时候我们可以通过重载操作符来满足我们的要求。以下是我们可以使用到的操作符,并且每个操作符我们还可以利用同名函数来给出不同的玩法。我们就简单的几个来进行实例。

文件都包含头文件

#include <string>
#include <iostream>

一、operator== :双等号操作符重载

双等号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };bool operator ==( STU p1) {if (getName() == p1.getName() && getAge() == p1.getAge()) {return true;}else{return false;}}operator ==( string name) {if (getName() == name) {return true;}else{return false;}}
};

operator==使用

int main()
{STU stu("战三",10);STU stu2("战三", 10);if (stu == stu2) {cout << "他两相等" << endl;}else {cout << "他两不等" << endl;}if (stu == "战三") {cout << "他两相等" << endl;}else {cout << "他两不等" << endl;}system("pause");return 0;
}

运行结果:

如果设置初始化两个不等。

二、operator = : 等号操作符重载

等号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };void operator = (STU p1) {_name = p1.getName();_age = p1.getAge();}
};

等号使用

int main()
{STU stu1("张三", 10);STU stu2("李四", 12);stu1.show();stu2.show();stu1 = stu2;stu1.show();
}

运行结果:

三、operator != : 不等号操作符重载

不等号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };bool operator != (STU p1) {if (_name != p1.getName() || _age != p1.getAge()) {return true;}else {return false;}}
};

使用

int main()
{STU stu1("张三", 10);STU stu2("李四", 12);if (stu1 != stu2) {cout << "他两不等" << endl;}else {cout << "他两相等" << endl;}STU stu3("张三", 10);STU stu4("张三", 10);if (stu3 != stu4) {cout << "他两不等" << endl;}else {cout << "他两相等" << endl;}
}

运行结果:

四、operator> : 大于号 或者 小于号 重载

大于号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };bool operator < (STU p1) {if (_age  < p1.getAge()) {return true;}else {return false;}}
};

使用

int main()
{STU stu1("张三", 10);STU stu2("李四", 12);if (stu1 < stu2) {cout << stu1.getName() << "的年龄小于" << stu2.getName()<<endl;}else{cout << stu1.getName() << "的年龄大于等" << stu2.getName()<<endl;}
}

运行结果:

五、operator << :输入重定向操作符重载

重定向操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };void operator << (string strName) {cout << _name << "与" << strName << "结义金兰" << endl;}void operator << (STU p1){cout << _name << "与" << p1.getName() << "成为兄弟" << endl;}
};

使用

int main()
{STU stu("双儿", 10);stu << "阿珂";STU stu2("刘备",30);STU stu3("关羽",29);stu2 << stu3;
}

运行结果:

六、operator + :加号操作符重载

加号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };STU operator +(int up) {_age += up;return *this;}};

使用:

int main()
{STU stu("双儿", 10);stu = stu + 10; // 双儿年龄加10stu.show();
}

运行结果:

七、operator ++ :++重载

双加号操作符重载

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };STU operator ++(int) {_age++;return *this;}
};

使用:

int main()
{STU stu("双儿", 10);stu++; // 双儿年龄加10stu.show();
}

运行结果:

八、operator -- :--重载减减

双减号操作符重载实例如下:

class STU {
private:string _name;int _age;
public:STU(string name, int age) { _name = name; _age = age; };const string getName() { return _name; };const int getAge() { return _age; };void show() { cout << "名字:" << _name << "年龄:" << _age<<endl; };STU operator --(int) {_age--;return *this;}
};
int main()
{STU stu("双儿", 10);stu--; // 双儿年龄加10stu.show();
}

运行结果:

c++ operator百样操作符重载(详解)相关推荐

  1. Kotlin 操作符重载详解

    本文主要内容 算术操作符重载 二元操作符重载 复合赋值操作符重载 一元操作符重载 比较操作符重载 集合相关的操作符重载 索引操作符重载 索引操作符重载Kotlin集合中的应用 in 操作符重载 区间操 ...

  2. C++入门:构造函数,析构函数,拷贝构造函数,运算符重载详解

    目录 类的6个默认成员函数 一.构造函数 1.概念 2.特征如下: (1) 函数名与类名相同. (2)无返回值. (3)对象实例化时编译器自动调用对应的构造函数. (4)构造函数可以重载. (5)如果 ...

  3. RxJava flatMap操作符用法详解

    RxJava系列文章目录导读: 一.RxJava create操作符的用法和源码分析 二.RxJava map操作符用法详解 三.RxJava flatMap操作符用法详解 四.RxJava conc ...

  4. 网络驱动开发样例snull详解(基于3.10.0)

    网络驱动开发样例snull详解(基于3.10.0) 本章素材为ldd3书中的网络驱动snull部分.由于现在内核的更新,导致其在最新的内核中无法编译该网络驱动,需要针对修改,顾为此文(内核3.10.0 ...

  5. python操作符op_详解python中的 is 操作符

    大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解.原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详 ...

  6. C++运算符重载详解

    目录 什么是运算符重载 运算符重载的意义 运算符重载的语法格式 简单例子 "+"运算符的重载 代码分析 运算符重载的两种方式 1,重载为类的成员函数 (1),双目运算符 (2),单 ...

  7. Hive近百个常规函数详解

    背景 Apache Hive是一个建立在Apache Hadoop之上的数据仓库软件项目,用于提供数据查询和分析,现支持引擎有MapReduce.Tez.Spark等等. Hive像传统的关系型数据库 ...

  8. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  9. 【C操作符】详解操作符

    ⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏+留言 ⭐系列专栏:C语言初阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们 ...

最新文章

  1. CakePHP中文手册【翻译】-请求处理组件
  2. Ubuntu下使用GDB断点Go程序
  3. Ehcache 缓存监控配置
  4. 浅谈最优化问题的KKT条件
  5. java jsf table_JSF数据表(h:dataTable)排序数据
  6. 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
  7. php里面12小时制和24小时制的选择方法
  8. c 怎么连接mysql博客_C连接MySql数据库
  9. PHP GD库解析一张简单图片并输出
  10. React开发环境搭建
  11. mybatis mysql 方言_mybatis-MyBatits执行效率问题
  12. spss 通径分析_【使用SPSS线性回归实现通径分析的方法】【原创资源】
  13. 【漏扫工具】awvs、appscan、xray下载、安装、使用方法(附带网盘链接)
  14. 国内外优秀的计算机视觉团队汇总
  15. 网上做什么可以赚钱?网上最靠谱的赚钱方法
  16. 中国第一批程序员的“青春饭”已经恰完了,35+的程序员该何去何从?
  17. 如何使用 K8s 实现跨集群管理,这篇文章告诉你了!赶紧收藏
  18. 5分钟白嫖我常用的免费效率软件/工具!效率300% up!
  19. android软键盘弹出黑屏
  20. GIS-空间分析(14)

热门文章

  1. 使用Gitee用作图片床写博客(Picgo+typora+Gitee)
  2. 后羿:我射箭了快上—用MotionLayout实现王者荣耀团战
  3. ftp设置用户只能够访问指定的目录
  4. 2021年G1工业锅炉司炉答案解析及G1工业锅炉司炉考试资料
  5. postgressql数据库集群搭建
  6. ctrl-z、fg、bg、nohup、setsid、()与、disown、screen
  7. [转贴]野蛮的没落----蒙古帝国的启示
  8. matlab状态方程算法,matlab机器人工具箱学习笔记——状态空间方程
  9. python提供了两种基本的数值类型_Python基本数据类型
  10. EfficientNet B0-B7 网络参数