前置操作符 后置操作符

++操作符的重载

  1.全局函数和成员函数都可以进行重载。

  2.前置++操作符不需要参数。

  3.后置++操作符需要int类型的占位参数(区分前置后置)。

#include <iostream>
#include <string>

using namespace std;

class Test
{
    int mValue;
public:
    Test(int i)
    {
        mValue = i;
    }

    int value()
    {
        return mValue;
    }

    Test& operator ++ () // 前置++
    {
        ++mValue;

        return *this;  // 返回加一后的数
    }

    Test operator ++ (int)  // ++后置要带一个参数
    {
        Test ret(mValue);

        mValue++;

        return ret;  // 返回加一前的数
    }
};

int main()
{
    Test t(0);

    t++;

    ++t;

    return 0;
}

原文地址:https://www.cnblogs.com/zsy12138/p/10840356.html

时间: 2024-10-15 02:36:03

前置操作符 后置操作符的相关文章

第四十课、前置操作符和后置操作符

一.i++和++i有没有区别? 1.现代编译器产品会对代码进行优化 2.优化使得最终二进制程序更加高效 3.优化后的二进制程序丢失了c/c++的原生语义 4.不可能从编译后的二进制程序还原c/c++程序 //由此可知,单行的i++和++i在汇编层的代码完全一样 int i = 0; 0123136E mov dword ptr [i],0 i++; 01231375 mov eax,dword ptr [i] 01231378 add eax,1 0123137B mov dword ptr [

第40课 前置操作符和后置操作符

1. ++i和i++真的有区别吗? (1)现代编译器会对代码进行优化.对于基础类型,前置++和后置++的汇编代码几乎是一样的,最终效率完全一样. (2)优化使得最终的二进制程序更加高效 (3)优化后的二进制程序丢失了C/C++的原生语义. (4)不可能从编译后的二进制程序还原C/C++程序. int i = 0; 013612FB mov dword ptr [i],0 i++; 01361302 mov eax,dword ptr [i] 01361305 add eax,1 01361308

C++中前置操作符和后置操作符的重载

1,C 语言中讨论了原生含义,C++ 中有必要考虑前置.后置操作符能够重载,有何问题: 2,值得思考的问题: 1,下面的代码有没有区别?为什么? 1,i++  // i 的值作为返回值,i 自增 1: 2,++i  // i 自增 1,i 的值作为返回值: 3,没有使用返回值,由于编译器(不同的编译器都是一样的)的优化,在工程上面,这两行代码没有区别: 2,真的有区别吗?编程实验: 1,main.cpp 文件: 1 #include <iostream> 2 #include <stri

C++--前置操作符与后置操作符

一.前置操作符与后置操作符 Q:下面的代码有没有区别?为什么?代码的实现 #include <iostream> #include <string> using namespace std; int main() { int i = 0; i++; ++i; return 0; } 意想不到的事实1.现代编译器都会对代码进行优化2.优化使得最终的二进制程序更加高效3.优化后的二进制程序丢失了C/C++的原生语义4.不可能从编译后的二进制程序还原C/C++程序 Q:++操作符可以重载

(转)前置++和后置++的区别

今天在阅读<google c++ 编程风格>的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意: 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高.于是我查了查前置++和后置++的区别. 注意:<more effective c++>条款8也专门叙述了问题.后来我发现,下面的文章基本就是它的翻版,哈哈 前置++和后置++的区别 <C专家编程>中有如下描述(P276

ThinkPHP - 前置操作+后置操作

前置操作和后置操作 系统会检测当前操作(不仅仅是index操作,其他操作一样可以使用)是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的方法名是在要执行的方法前面加 _before_和_after_,例如: class CityAction extends Action{ //前置操作方法 public function _before_index(){ echo 'before<br/>'; } public function index(){ echo 'index<

android Camera 如何判断当前使用的摄像头是前置还是后置

现在 android 平台的智能手机一般都标配有两颗摄像头.在 Camera 中都存在摄像头切换的功能. 并且有一些功能前后置摄像头上会有所不同.譬如人脸检测,人脸识别,自动对焦,闪光灯等功能, 如果前置摄像头的像素太低,不支持该功能的话,就需要在前置摄像头上关掉该 feature. 那么是如何判断并切换前后置摄像头的呢? 我们先来看下 CameraInfo 这个类, 1 /** 2 * Information about a camera 3 */ 4 public static class

前置及后置++,--

关于前置及后置++,-- a++ (temp=a,a+=1,temp) //由此看出后置++产生临时变量 ++a (a+=1,a) 所以在程序中出现a++=10,(a++)++,++(a++)等试图改变后置++的值,是错误(编译错误)的 前置及后置++的用法 1.遇到逗号结束: 如:int a=10; int c=(a++,++a,a++); printf("%d\n",c); 在VC6中打印c的值为12,这里的(a++,++a,a++);为逗号表达式,从左向右运算,遇逗号后置++进行

ThinkPHP3.2基础教程(36)--控制器-前置和后置操作

前置和后置操作指的是在执行某个操作方法之前和之后会自动调用的方法,不过仅对访问控制器有效. 其他的分层控制器层和内部调用控制器的情况下前置和后置操作是无效的. 系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的定义方式如下: <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller{ //前置操作方法 public functio

关于前置++和后置++

一般认为前置++是先将变量的值加1,然后使用加1后的值参与运算:而后置++是先使用该值参与运算,然后再将该值加1. 先看第一个例子: package test; public class Plus_Test01 { public static void main(String[] args) { int i = 100; i = i++; System.out.println(i); } } 猜猜结果是什么? 接着看第二个: package test; public class Plus_Tes