C++和C语言相比,最为人诟病的就是其性能问题,通常一条C语言经编译器解释后,可以固定转换成5—10条汇编语言,但是一条C++语言,就没有这么幸运了,可能会是3条汇编语言,也可能是300条。C++影响性能的原因很多,其中一个就是临时对象的创建和销毁。这里我简述一种减少创建临时对象的方法--返回值优化问题
很多时候,函数需要按值返回,这其中就会不可避免地涉及到临时对象的创建和销毁。假设定义如下的Complex类:
class Complex { friend Complex operator +(const Complex&,const Complex&); public: Complex(double r=0, double i=0):real(r),imag(i) { cout<<\"I\'m in constructor\"<<endl; } Complex(const Complex& c):real(c.real),imag(c.imag) { cout<<\"I\'m in copy constructor\"<<endl; } Complex& operator =(const Complex& c) { real=c.real; imag=c.imag; cout<<\"I\'m in assignment\"<<endl; return *this; } void print() ~Complex() private: }; |