网站留言板 html,泰安市星际网络科技有限公司,设计师建站网站,郴州新网招聘官网参考链接#xff08;链接讲的很全#xff09;#xff1a;C前置和后置的区别
对于迭代器和其他模板对象使用前缀形式 (i) 的自增, 自减运算符.#xff0c;理由是 前置自增 (i) 通常要比后置自增 (i) 效率更高。
class Age { public: Age operator() //前置 {…参考链接链接讲的很全C前置和后置的区别
对于迭代器和其他模板对象使用前缀形式 (i) 的自增, 自减运算符.理由是 前置自增 (i) 通常要比后置自增 (i) 效率更高。
class Age { public: Age operator() //前置 { i; return *this; } const Age operator(int) //后置 { Age tmp *this; //tmp是一个临时对象会造成一次构造函数和一次析构函数的额外开销。(*this); //利用前置 return tmp; } Age operator(int i) //赋值操作 { this-i i; return *this; } private: int i; }; 1.返回值类型的区别
前置的返回类型是引用Age后置的返回类型const Age临时对象。这意味着前置返回的是左值后置返回的是右值。
2.形参的区别 前置没有形参而后置有一个int形参但是该形参也没有被用到。很奇怪难道有什么特殊的用意 其实也没有特殊的用意只是为了绕过语法的限制。 前置与后置的操作符重载函数函数原型必须不同。否则就违反了“重载函数必须拥有不同的函数原型”的语法规定。
3.代码实现的区别 前置的实现比较简单自增之后将this返回即可。需要注意的是一定要返回this。 后置的实现稍微麻烦一些。因为要返回自增之前的对象所以先将对象拷贝一份再进行自增最后返回那个拷贝。
4.效率的区别