青岛网站排名提升,检索网站怎么做,上海建材网站,简洁大气企业网站源码i 和 i 哪个效率更高#xff1f; 在这里声明#xff0c;简单地比较前缀自增运算符和后缀自增运算符的效率是片面的#xff0c;因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用#xff0c;而是仅仅简单地用于增加一员…i 和 i 哪个效率更高 在这里声明简单地比较前缀自增运算符和后缀自增运算符的效率是片面的因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用而是仅仅简单地用于增加一员操作数答案是明确的前缀法和后缀法没有任何区别编译器的处理都应该是相同的很难想象得出有什么编译器实现可以别出心裁地在二者之间制造任何差异。我们看看下面这个程序。 1i 返回对象的引用
2i 总是要创建一个临时对象在退出函数时还要销毁它而且返回临时对象的值时还会调用其拷贝构造函数
导致在大对象的时候产生了较大的复制开销引起效率降低。因此使用自定义类型注意不是指内建类型的时候
应该尽可能地使用前缀式递增或递减。 下面代码可以展示两者的区别 #includeiostream
using namespace std;
class Integer {
public:Integer(long data) :m_data(data) {}Integer operator() { //前置版本返回引用cout Integer::operator() called! endl;m_data;return *this;}Integer operator(int) { //后置版本返回对象的值cout Integer::operator(int) called! endl;Integer temp *this;m_data;return temp; //返回this对象的旧值}
private:long m_data;
};void main(void)
{Integer x 1; //call Integer(long)x; //call operator()x; //call operator(int)
}