C++中减少内存拷贝的小技巧

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,参考下面这篇博客

经验分享 程序员 微信小程序 职场和发展