如何搭建个人网站,请人做网站安全,大力推进网站集约化建设,给个2021站你们懂得不花钱的我们这里选择重点讲解前置/后置自增的重载 前置/后置自减就是一个道理啦
前置自增 num 前置自增#xff1a;先自增再取值 重载前置自增允许有两种形式
成员函数:
num.operator()
Data operator();全局函数:
operator(num)
Data operator(Data );需要提醒大家…我们这里选择重点讲解前置/后置自增的重载 前置/后置自减就是一个道理啦
前置自增 num 前置自增先自增再取值 重载前置自增允许有两种形式
成员函数:
num.operator()
Data operator();全局函数:
operator(num)
Data operator(Data );需要提醒大家的是在重载前置自增的时候返回的是引用 我们在哪里还建议大家重载结束后返回引用 没错就是对和的重载
ostream operator(ostream ,const Data );
istream operator(istream ,Data );之所以选择返回引用很大的一个原因是为了之后能够级联使用该运算符
cinxy;
coutuv;
(num);当然函数也好重载运算符也好选择返回引用还是返回值主要的依据还是函数的功能和程序的需求 在这里不得不啰嗦一句有些函数返回的是有const修饰的引用这个时候就要格外注意该函数返回的对象不能作为表达式的左值 更详细的const和介绍可以去之前的blog里考古~ 文章结尾介绍const和的基本含义 实例讲解助力实战 可见const和的运用一直以来都是编程中的一个难点 后置自增 num 后置自增先取值再自增 重载前置自增允许有两种形式
成员函数:
num.operator(integer)
const Data operator(int);全局函数:
operator(num,integer)
const Data operator(Data ,int);可以看到对于后置自增的重载函数的参数有所增加也没有选择返回引用返回值还有const关键字修饰 这就说明后置自增返回的只是一个临时对象拷贝值 临时对象 临时对象是无法用肉眼观察到的用完就析构。 ① 类型转换void f(Two) {cout Function f called. endl;} f(one); //Two的临时对象 ② 无名临时对象Integer t Interger(10); ③ 函数返回对象coutString(5,15); 随之而来一个问题 num只能作为表达式的右值我们不能对后置自增返回的值进一步操作 num既可以作为表达式的左值也可以作为表达式的右值 (a); //CE
(a); //CE
a 1; //CE(a); //OK
(a); //OK
a 1; //OK重载测试
#includeiostream
using namespace std;class Test{friend ostream operator(ostream output,const Test A) {outputA.value;return output;}
public:Test():value(0) {};Test operator() {value;return (*this);}const Test operator(int) {Test tmp(*this);(*this);return tmp;}
private:int value;
};int main() {Test num;coutnumendl;coutnumendl;system(pause);return 0;
}//Output
0
2