记录++之前先记一下左右值和存取数据的问题

数据的存放分三个部分,堆区,栈区和静态变量区

左值可以更改,右值不能更改

栈区和堆区存储的都是左值,可以随意更改其值,静态变量区部分数据是右值,比如const修饰的值,函数创建的临时变量,都不可更改

前缀++重载,直接直接++操作,返回本身即可

后缀++重载,需创建临时变量,对原元素执行+1操作,返回临时变量,返回值类型用const修饰,让返回值成为一个右值,不可修改,防止出现(++(class++))的情况

 #include<bits/stdc++.h>
using namespace std;
class cl{
public:
int x;
cl(){}
cl(const cl& c){
cout<<"执行复制构造函数\n";
x=c.x;
}
cl& operator++(){//前缀++重载
x+=;
return *this;
}
const cl operator++(int ){//后缀++重载
cl mid = *this;
this->x+=;
return mid;
}
void prin(){
cout<<"cl x = "<<x<<endl;
}
}; int func()
{
int x=;
return x;
}
int main()
{
cl c1;
c1.x=;
cl c2=(c1++);
cout<<c1.x<<" "<<c2.x<<"\n"; int a=;
int x=(++(a++));//报错,a++产生的临时变量是右值,不可改变 return ;
}

C++之++运算符重载问题的更多相关文章

  1. C++ 运算符重载时,将运算符两边对象交换问题.

    在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...

  2. C#高级编程笔记2016年10月12日 运算符重载

    1.运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加.相乘或逻辑操作等.例如,语句if(a==b).对于类,这个语句在默认状态下会比较引 ...

  3. C++运算符重载

    C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...

  4. 标准C++之运算符重载和虚表指针

    1 -> *运算符重载 //autoptr.cpp     #include<iostream> #include<string> using namespace std ...

  5. python运算符重载

    python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...

  6. PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天

    PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数    1  构造  2  析构   3  赋值  4 拷贝构造  5 oper ...

  7. 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

    [源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...

  8. 我的c++学习(8)运算符重载和友元

    运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 方法与解释 ◆ 1.定义运 ...

  9. c/c++面试题(6)运算符重载详解

    1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...

  10. 实验12:Problem H: 整型数组运算符重载

    Home Web Board ProblemSet Standing Status Statistics   Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...

随机推荐

  1. vim基本配置备份

    我的vim基本配置如下,在这里作个备份: set background=light syntax on set number set smartindent set expandtab set tab ...

  2. Python 快速部署安装所需模块

    需求 我们需要在拷给别人或者提交至服务器也用同样的模块,好保持和开发的一样,所以我们需要自己手动写配置模块信息. 方法 在根目录下创建一个 requirements.txt  文件 里面写 模块名== ...

  3. net对象的克隆

    class Person { public string name; public List<string> hobby; } void main() { Person p1 = new ...

  4. 孤荷凌寒自学python第四十天python 的线程锁RLock

     孤荷凌寒自学python第四十天python的线程锁RLock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 因为研究同时在多线程中读写同一个文本文件引发冲突,所以使用Lock锁尝试同步, ...

  5. zabbixproxy安装

    目录 1     zabbix3.2安装.... 1 2     安装proxy. 1 2.1      安装zabbix-proxy. 1 2.1.1 配置zabbix yum源.... 1 2.1 ...

  6. JSP/Servlet Web 学习笔记 DayFive

    ServletConfig <只对当前Servlet有效> (1)在Web容器初始化Servlet实例时,都会为这个Servlet准备一个唯一的ServletConfig实例(俗称Serv ...

  7. java语言基础第二讲 课程作业02 总结

    一.编程的好习惯 1.注释习惯.单行注释://,  多行注释:/*   */ . 2.程序中添加适当的空白:4个空格. 3.文件名必须与公有类名一致,即public class 类名. 4.java中 ...

  8. Linux下nginx支持.htaccess文件实现伪静态的方法!

    在Google上搜索的资料很多人都说nginx目前不支持.htaccess文件,我按照nginx的规则试验了一下,结果发现nginx是完全支持.htaccess文件的! 方法如下: 1. 在需要使用. ...

  9. 利用MapReduce计算平均数

    利用mapreduce求出股票价格的开盘和收盘平均数 下图为采集到的股票信息,共计1416支股票的信息 因为在linux系统下默认采用utf-8的编码格式,而在win下txt默认采用ANSI编码格式. ...

  10. TOPCoder(一)Time

         Class: Time Method: whatTime Parameters: int Returns: String Method signature: String whatTime( ...