operator重载
- 格式
返回值类型 operator 运算符名称 (形参表列){//TODO: }
operator
是关键字,专门用于定义重载运算符的函数。我们可以将operator 运算符名称
这一部分看做函数名。
- 类中的重载
#include <iostream>using namespace std;class person { private:int age; public:person(int nAge){this->age = nAge;}bool operator==(const person& ps){if (this->age == ps.age){return true;}return false;} };int main() {person p1(10);person p2(10);if (p1 == p2){cout << "p1 is equal with p2." << endl;}else{cout << "p1 is not equal with p2." << endl;}return 0; }
上述代码 bool operator==(const person& ps) 代表在类中重载了 "==" 于是可做main函数中那样的调用:p1 == p2 ,其实关键的就这里,p1 == p2等价于 p1.operator==(p2) ,p1调用,operator==是函数名,p2是传入的参数。
- 全局重载的函数
#include <iostream>using namespace std;class person { public:person(int nAge){this->age = nAge;}int age;}; bool operator==(const person& ps, const person& ps1) {if (ps1.age == ps.age){return true;}return false; }int main() {person p1(10);person p2(10);if (p1 == p2){cout << "p1 is equal with p2." << endl;}else{cout << "p1 is not equal with p2." << endl;}return 0; }
全局重载函数必须要两个参数,p1 == p2又需要这样理解:当识别到符号 “==” ,于是会调用operator==函数,将p1, p2作为传参,即 operator==(p1, p2)
operator重载相关推荐
- C++ operator重载运算符详解
[toc] Chapter XIV C++ operator 重载运算符的作用: 主要是代替成员函数的方式为自建类型完成基本任务 当然, 用成员函数完全可以代替operator的功能, 但是使用起来绝 ...
- C++ operator 重载
When 在程序中对自定义数据结构进行运算的时候,比如比较自定义数据结构的大小. What 数值计算型 operator+ operator- 逻辑计算型 operator== operator!= ...
- 关于运算符operator重载出错解决方法
问题描述: 在类定义的公有函数中,定义友元函数"operator<<",在编译的时候提示"类成员是私有的,无法访问". 编译器:G++ 解决方法: ...
- C++类对象排序operator重载操作
类内默认含有this指针,bool operator==(const T& a) 类外则需要写两个参数,bool operator==(const T& a, const T& ...
- C++的重载操作符(operator)介绍
本文主要介绍C++中的重载操作符(operator)的相关知识. 1. 概述 1.1 what operator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理 ...
- C++ 赋值重载运算符(overloaded operator)operator关键字
重载运算符 重载运算符的本质是函数,其名字由operator关键字后接表示要定义的运算符的符号组成. 因此,赋值运算符就是一个名为operator=的函数. 类似于任何其他的函数,重载运算符函数也有一 ...
- C++中的运算符重载
1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载.重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 ...
- C++ operator两种用法【转】
C++中的operator,有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).下面分别进行介绍: 1.operator ...
- c++重载自增与自减运算符(前置与后置)
运算符重载 要点: 1. 后置的运算符要带一个整型参数(用来与前置运算符区分开). 2.后置的返回值不要用引用(否则会因为是局部变量导致返回为一个不存在的值). 3.再在置中要定义一个临时变量来返回之 ...
- 操作符(++,+,+=,小于号,(),--等)重载
1. 操作符(++,+,+=,小于号等)重载 新建QT项目,编写头文件 #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #in ...
最新文章
- 斯坦福CS224n、CMU NLP公开课 播放地址
- LLVM系列文章1: Debian/Ubuntu 安装和使用 LLVM
- Java多线程:synchronized关键字和Lock
- 数据同步关于去除乱码插入mysql数据库
- node-webkit中使用sqlite3
- 可怕又可笑的看病经历
- 两个大数(整数)相加模板
- azure git怎么使用_Azure(一)Azure Traffic Manager为我们的Web项目提供负载均衡
- 德州计算机速成班培训,德州办公软件培训速成班
- easyui php 拖动排序,Easyui 自定义排序_EasyUI 教程
- Js-01. 语法、关键保留字、变量
- 【HDOJ2222】Keywords Search(AC自动机)
- 贝叶斯公式的直观理解(先验概率/后验概率)(未完)
- [海隆软件][方正电机]IPO,打新股中
- android token加密_Android使用token维持登陆状态的方法
- Android文件资源(raw/data/asset)的存取
- 先发新机再搞碰瓷,酷派复活就有胜算?
- 带有en的单词有哪些_英语前缀大全en:开头是EN的单词有哪些
- win2008r2 64位解决Infragistics.NetAdvantage 安装时总是提示%SystemDriver%inetpub\wwwroot错误的方法
- 51单片机用lcd1602显示两行字符串