1:C++对传参和传返回值时构造的优化处理
传参数时,传引用比传值减少一次拷贝构造; 传返回值时,编译器会进行优化,返回值在一个表达式内也会进行优化。
一般而言,调用构造和拷贝构造的次数 = 调用析构函数的次数。
2:讨论传值和传返回值得各种情况
先写一个Date类,以它的调用情况为例:
#include<iostream>
using namespace std;
class Date
{
public:
Date()
{
cout<<"Date()"<<endl;
}
Date(const Date& d)
{
cout<<"Date(const Date& d)"<<endl;
}
Date& operator=(const Date& d)
{
cout<<"Date& operator=(const Date& d)"<<endl;
return *this;
}
~Date()
{
cout<<"~Date()"<<endl;
}
};
情况1:
//Date对象做参数:传值&传引用
//void fun1(Date d)//传值
//{}
void fun1(Date& d)//传引用
{}
int main()
{
Date d1; //构造一次
fun1(d1); //传值时,会调用一次拷贝构造,传引用减少拷贝构造
return 0;
运行结果:传值: