1,在函数参数中使用&来代替,避免在调用函数时进行拷贝构造
class CTset
{
public:
CTset()
{
cout << "construct a CTest" << endl;
}
CTset(const CTset& A)
{
cout << "Copy Constructor a CTest" << endl;
}
~CTset()
{
cout << "destroy a CTest" << endl;
}
int ID;
};
int getCTestIDByRef(const CTest& test)
{
cout << "使用引用" << endl;
return test.ID;
}
int getID(CTest test)
{
cout << "不使用引用" << endl;
return test.ID;
}
int main()
{
CTest a;
getCTestIDByRef(a);
getID(a);
return 0;
}
控制台打印结果如下,可以看到使用引用可以避免一次拷贝构造,当因为引用实际就是给变量起一个别名,如果不使用引用会在函数中构造一个临时的变量a,函数结束后再析构,当参数所占内存较大时显然会影响效率;
2,将函数参数改为指向变量的指针
既然函数参数内存太大,为了避免函数调用时产生的不必要的复制构造,干脆直接用指针。考虑到内存的释放问题,可以用智能指针处理;
3,使用右值引用和std::move,参考下面这篇博客