前置和后置自增以及解引用重载函数(++、--、*)

#include<iostream>

using namespace std;

class INT

{

private:

int m_i;

public:

INT(int i):m_i(i){}

// 区分前置和后置自增重载函数的区别是是否有参数,以及参数的个数

// 如果是前置自增,比如++a,因为++符号前面没有变量,于是重载函数也就没有参数

INT& operator++()

{

++(this->m_i);

return *this;

}

const INT operator++(int)

{

INT temp = this->m_i;

++(*this);

return temp;

}

INT& operator--()

{

--(this->m_i);

return *this;

}

const INT operator--(int)

{

INT temp = this->m_i;

--(*this);

return temp;

}

//dereference

int& operator*() const

{

return (int&)m_i;

}

friend ostream& operator<<(ostream& os,const INT& i);

};

ostream& operator<<(ostream& os,const INT& i)

{

os << ‘[‘ << i.m_i << ‘]‘;

return os;

}

int main()

{

INT I(5);

cout << I;

cout << I++;

cout << ++I;

cout << I--;

cout << --I;

cout << *I;

cout << endl;

return 0;

时间: 2024-11-05 14:37:41

前置和后置自增以及解引用重载函数(++、--、*)的相关文章

前置后置自增自减操作

class Int { friend ostream& operator<<(ostream& os, const Int& i); friend istream& operator>>(istream& is, Int& i); friend bool operator<(const Int& a, const Int& b); private: int value; public: Int():value(0

c++重在运算符前置自增和后置自增

class student { int age; }; int main() { class student stu; (stu++)++;//error ++(stu++);//error stu++=1;//error (++stu)++;//error ++(++stu);//error ++stu=1;//error return 0; } 前置++和后置++,有4点不同: 返回类型不同.形参不同.代码不同.效率不同 返回类型不同 前置++的返回类型是左值引用,后置++的返回类型cons

关于前置++和后置++

一般认为前置++是先将变量的值加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

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

今天在阅读<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

深入理解递增,前置与后置

当x++与++x独占一行是,它们的功能是相似的,都可以看做x=x+1; 当x++与++x嵌入在表达式里面的时候,x++是先x+1,在执行表达式:而++x是先执行表达式,再x+1. 例子 x=10; y=10; if(++x==11){}   True; if(y++==11){}   False; 深入理解递增,前置与后置