C++ operator重载运算符和隐式转换功能的实现
C++ operator重载运算符和隐式转换功能的实现:
#include <iostream>
using namespace std;
class OperatorTest {
public:
int value_; OperatorTest() {
value_ = ;
} /*++A*/
OperatorTest& operator ++() {
value_++;
return *this;
} /*A++*/
OperatorTest operator ++(int) {
OperatorTest ot(*this);
value_++;
return ot;
} /*A+B*/
OperatorTest operator +(OperatorTest& ot) {
OperatorTest ot_tmp;
ot_tmp.value_ = value_ + ot.value_; return ot_tmp;
} /*A(int)赋值*/
OperatorTest& operator ()(int a) {
value_ = a;
return *this;
} /*A<B*/
bool operator <(OperatorTest& ot) {
return value_ < ot.value_;
} /*A>B*/
bool operator >(OperatorTest& ot) {
return value_ > ot.value_;
} /*A!=B*/
bool operator !=(OperatorTest& ot) {
return value_ != ot.value_;
} /*A==B*/
bool operator ==(OperatorTest& ot) {
return value_ == ot.value_;
} /*A+=B*/
OperatorTest& operator +=(OperatorTest& ot) {
value_ += ot.value_;
return *this;
} /*A-=B*/
OperatorTest& operator -=(OperatorTest& ot) {
value_ -= ot.value_;
return *this;
} /*隐式转换*/
operator int() {
return value_;
}
}; int main() {
OperatorTest A, B; cout << "++A:" << A++ << endl;
cout << "B++:" << ++B << endl;
cout << "A+B:" << A + B << endl;
cout << "A(int):" << A() << endl;
cout << "A,B:" << A << "," << B << endl;
cout << "A<B:" << (A < B) << endl;
cout << "A>B:" << (A > B) << endl;
cout << "A!=B:" << (A != B) << endl;
cout << "A==B:" << (A == B) << endl;
cout << "A+=B:" << (A += B) << endl;
cout << "A-=B:" << (A -= B) << endl;
}
运算结果:
++A:
B++:
A+B:
A(int):
A,B:,
A<B:
A>B:
A!=B:
A==B:
A+=B:
A-=B:
可以在网上在线运行代码,C++Shell网址:http://cpp.sh/82xpny
C++ operator重载运算符和隐式转换功能的实现的更多相关文章
- null的坑 和 比较运算符、相等运算符的隐式转换问题 (在javascript中,null>=0 为真,null<=0 为真,null==0却为假,null到底是什么?)
null在关系运算中的坑 & 关系运算符的隐式转换问题 注意: 比较运算符 和 相等运算符 的 ECMAscript 语法实现不同. 比较运算符 和 相等运算符 对数据进行了隐式转换, 相当于 ...
- C# 转换符的重载 显示、隐式转换
class Complex { //保存转换的值 Int32 v; public Complex(Int32 x) { v = x; } public Int32 ToInt32() { return ...
- C++ 构造函数 隐式转换 深度探索,由‘类对象的赋值操作是否有可能调用到构造函数’该实验现象引发
Test1 /** Ques: 类对象的赋值操作是否有可能调用到构造函数 ? **/ class mystring { char str[100]; public: mystring() //myst ...
- Scala入门到精通——第十九节 隐式转换与隐式參数(二)
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...
- 21.C++- "++"操作符重载、隐式转换之explicit关键字、类的类型转换函数
++操作符重载 ++操作符分为前置++和后置++,比如: ++a; a++; ++操作符可以进行全局函数或成员函数重载 重载前置++操作符不需要参数 重载后置++操作符需要一个int类型的占位参数 ...
- C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点
C++ 语言中的重载.内联.缺省参数.隐式转换等机制展现了很多优点,但是这些 优点的背后都隐藏着一些隐患.正如人们的饮食,少食和暴食都不可取,应当恰到好处. 我们要辨证地看待 C++的新机制,应该恰如 ...
- C++转换构造函数和隐式转换函数 ~ 转载
原文地址: C++转换构造函数和隐式转换函数 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成doubl ...
- C++转换构造函数和隐式转换函数
今天是第一次听到C++还有个转换构造函数,之前经常见到默认构造函数.拷贝构造函数.析构函数,但是从没听说过转换构造函数,隐式转换函数也是一样,C++的确是够博大精深的,再次叹服! 其 ...
- 显示转换explicit和隐式转换implicit
用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...
随机推荐
- 005_nginx414_nginx 414 Request-URI Too Large
一.开发请求一个非常长的请求参数 https://jiaju.jyall.me/backend/dish/getSales/?dishId=167271&dishId=166975&d ...
- ajax返回json对象的两种写法
1. 前言 dataType: 要求为String类型的参数,预期服务器返回的数据类型.如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并 ...
- linux下各目录的作用
这么久了,一直觉得对于linux的运作情况还是懵懵懂懂的样子,刚才专门又看了一下 linux 下各目录的作用,记下来,以备以后再忘了. 下面内容来自:http://www.linuxidc.com/L ...
- eclipse安装主题插件(Color Theme)
点击“Help”--> Install New Software Name:ColorThemeLocation:http://eclipse-color-theme.github.io/upd ...
- html----不常见标签
控制文字滚动 <!-- direction="right up down left" --> <!-- behavior:滚动方式(包括3个值:scroll.sl ...
- boto3--通过Python的SDK连接aws
通过Python的SDK连接aws 参考: https://aws.amazon.com/cn/developers/getting-started/python/ aws上生成访问密钥 ID 和私有 ...
- JavaScript中利用Ajax 实现客户端与服务器端通信(九)
一:Ajax (Asynchronous JavaScript and XML)不是一个新的技术,事实上,它是一些旧有的成熟的技术以一种全新的更加强大的方式整合在一起 Ajax的关键技术: 1.使用X ...
- c3p0和QueryRunner的结合使用,让开发更加简便
1:DBUtils中的QueryRunner的使用: 1.1:QueryRunner中提供了对SQL语句操作的api: 1.2:主要有三个方法: 1.2.1:query():用于执行select(查询 ...
- POJ 2376 Cleaning Shifts【贪心】
POJ 2376 题意: 给出一给大区间和n各小区间,问最少可以用多少小区间覆盖整个大区间. 分析: 贪心法.设t为当前所有已确定区间的最右端,那我们可以每次都取所有可选的小区间(左端点<=t+ ...
- python的selenium
from selenium import webdriverChromeDriver="C:\Program Files (x86)\Google\Chrome\Application\ch ...