标题以上分别对于++/--/*

 #include <iostream>
#include <cstddef> using namespace std; class INT {
friend ostream& operator<<(ostream& os, const INT& i); private:
int m_i; public:
INT(int i) :
m_i(i) {
}
//前缀
INT& operator++() {
cout << "++i" << endl;
++(this->m_i);
return *this;
}
//后缀
const INT operator++(int) {
//const的作用是防止i++++
//i++++=i.operator++(0).operator++(0)
//第二次++操作的完全就是第一次的临时变量
//而且int也不允许这样写
/*<html>https://blog.csdn.net/piaopiaohu123/article/details/7333771</html>*/
cout << "i++" << endl;
INT temp = *this;
++(*this);
return temp;
} //前缀
INT& operator--() {
cout << "--i" << endl;
--(this->m_i);
return *this;
} //后缀
const INT operator--(int) {
cout << "i--" << endl;
INT temp = *this;
++(*this);
return temp;
} int & operator*() const {
return (int&) m_i;
//以上转换操作告诉编译器,你确实要将const int转为non-const lvalue
//如果没有这样明白地转型,有些编译器会给你警告,有些更严格的编译器会视为错误
} //写在内部只能有一个参数,另一个参数是this
// ostream& operator<<(ostream& os, const INT& i) {
// os << '[' << i.m_i << ']';
// return os;
// }
};
ostream& operator<<(ostream& os, const INT& i) {
os << '[' << i.m_i << ']';
return os;
} void A(int &a) { } int main(int argc, char **argv) {
INT I();
// cout << I++ << endl;
//测试后缀的临时变量的效果
//int i=5;
//A(i++);//error:说明i++返回的也是临时变量
//A(++i);//可以
/*
* void A(const int &a)
* 都可以
*/ //测试operator*()返回值的引用效果
cout << ++(*I) << endl; //
cout << I << endl; //[6]
int &a = *I;
cout << ++a << endl; //
cout << I << endl; //[7]
int b = *I;
cout << ++b << endl; //
cout << I << endl; //[7] // cout << ++I << endl;
// cout << I << endl;
return ;
}

increment/decrement/dereference操作符的更多相关文章

  1. STL——increment/decrement/dereference操作符

    increment/dereference操作符在迭代器的实现上占有非常重要的地位,因为任何一个迭代器都必须实现出前进(increment,operator++)和取值(dereference,ope ...

  2. increment/decrement/dereference

    #include <vector> #include <deque> #include <algorithm> #include <iostream> ...

  3. ITEM M6 自增(INCREMENT)、自减(DECREMENT)操作符前缀形式与后缀形式的区别

    前缀自增 UPInt & UPint::operator++() { *this+=1; return *this; } 后缀自增 const UPInt & UPint::opera ...

  4. 【M6】区别increment/decrement操作符的前置(prefix)和后置(postfix)形式

    1.考虑++(--的情况是一样的),前置是累加然后取出,后置是取出然后累加. 2.重载方法根据形参表的不同区分,问题来了,前置和后置形式都没有形参,因此没法区分.怎么办? 对于后置增加一个形参int, ...

  5. [atAGC049E]Increment Decrement

    由于每一个操作的逆操作都存在,可以看作将$a_{i}$全部变为0的代价 先考虑第一个问题,即对于确定的$a_{i}$如何处理 如果仅能用第2种操作,定义点$i$的代价为以$i$为左端点或以$i-1$为 ...

  6. noobSTL-1-配置器-1

    noobSTL-1-配置器-1 1.要点分析 1.1 可能让你困惑的C++语法 组态 即配置. 临时对象 一种无名对象.有时候会刻意地制造临时对象. 静态常量整数成员在class内部直接初始化 con ...

  7. noobSTL-1-配置器-0

    noobSTL-1-配置器-0 0.前言 STL的配置器(allocator),也叫内存分配器,负责空间配置与管理,简单地说,就是负责管理内存的. 从实现的角度来看,配置器是一个实现了动态空间配置.空 ...

  8. 《STL源码剖析》学习半生记:第一章小结与反思

    不学STL,无以立.--陈轶阳 从1.1节到1.8节大部分都是从各方面介绍STL, 包括历史之类的(大致上是这样,因为实在看不下去我就直接略到了1.9节(其实还有一点1.8.3的内容)). 第一章里比 ...

  9. C++ 重载操作符与转换

    <C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ...

随机推荐

  1. centos7根分区扩容(亲测有效)

    root@haojftest:~# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos_test2-root 28G 14G 15G % / devtmpfs ...

  2. 一、PHP_OSS使用

    一.OSS PHP SDK下载 二.文件目录 三.参考手册快速入门对oss操作 以及到控制台找到相应参数并填写

  3. 使用电脑adb给Essential Phone刷机 —(官方篇)

    用ADB给Essential Phone线刷升级 重要:请确保在刷机前已经解锁,关于解锁教程群里有! 准备 原版boot Twrp boot Magisk卡刷包 到官网下载OTA包 准备好Essent ...

  4. How to enable flash on Chromium

    sudo apt install chromium-browser pepperflashplugin-nonfree

  5. Spring Boot 构建电商基础秒杀项目 (三) 通用的返回对象 & 异常处理

    SpringBoot构建电商基础秒杀项目 学习笔记 定义通用的返回对象 public class CommonReturnType { // success, fail private String ...

  6. 如何使用CSS 让Table的最后一列的右边框不显示

    table{ border-collapse:collapse; } .templateColumn{ border-right:1px solid #AAA; } table.templateCon ...

  7. Linux下git的使用——将已有项目放到github上

    本地已经有一个项目了,需要将该项目放到github上,怎么操作? 步骤: 本地安装git,有github账号是前提. (1)先在github创建一个空的仓库,并复制链接地址.使用https,以.git ...

  8. Nginx 决策浏览器缓存是否有效

    expires指令是告诉浏览器过期时间 syntax:expires [modified] time; eopch | max | off; default : off context :http,s ...

  9. Ubuntu 16.04配置Java Web开发环境

    说明:在Linux下无论是开发还是服务器配置,我个人建议都安装二进制包版本的,优点:配置清晰,容易发现问题,性能调优方便等.缺点:配置太复杂.而其余平台的建议是一键安装版本,毕竟都是用于测试的,不会实 ...

  10. LNMP平台部署

    LNAP平台概述 百度百科 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有 ...