您的位置:首页 > 编程语言 > C语言/C++

C++中前置++与后置++运算符重载

2017-07-31 11:25 155 查看
C++中前置++ 与后置++是不同的,具体不同,下面代码中有体现。

在后置++里,人为添加一个参数(int),主要是为了区别前置++,这个参数不会被使用。这里的int是个哑元。

一个函数的参数 只有类型 没有名字 则这个参数称之为哑元。

class A
{
public:
A& operator++()//前置++,返回的是引用
{
data +=1;
return *this;
}
const A operator++(int)//后置++,返回的是值
{
A old(*this);
++(*this);  //调用前置++
return old;
}
//从代码可以看出,前置++比后置++效率高,不用产生临时对象,不用调用拷贝构造函数
int data;
};

ostream& operator<<(ostream& os,A& a)
{
os<<a.data<<endl;
return os;
}

int _tmain(int argc, _TCHAR* argv[])
{
A a={1};
cout<<a;//1
A b=++a;
cout<<b;//2
cout<<a;//2
A c=a++;
cout<<c;//2
cout<<a;//3

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  运算符重载 ++