把AI Agent养在自家电脑:本地部署与远程访问完全指南
2026/10/12 9:36:51
在 C++ 开发中,一个经常让人困惑的问题是:
函数参数到底该写
T、T&,还是const T&?
很多人只记住一句话:
“大对象用 const 引用,小对象用值传递”,
但背后的逻辑如果不理解,实际写代码时还是会犹豫。
这篇文章我们从性能、语义、工程实践三个角度,把参数传递方式一次讲清楚。
void f(T x);特点:
x,不会影响外部适用场景:
void f(T& x);特点:
适用场景:
void f(const T& x);特点:
适用场景:
const T(值传 const)?很多人会写:
void f(const std::string s);这其实意义不大,因为:
所以:
const T不能省拷贝,const T&才能省拷贝。
void f(std::string s); // 会拷贝 void f(const std::string& s); // 不拷贝拷贝 string / vector 可能涉及:
这是真正的资源浪费。
void f(int x); // 推荐 void f(const int& x); // 没必要原因:
当函数需要保存参数时,推荐这样写:
class User { std::string name; public: void setName(std::string n) { name = std::move(n); } };优点:
这是现代 C++ 很常见的工程写法。
是 →T&
否 → 继续
是 →T
否 → 继续
是 →T + move
否 →const T&
可以直接背这一句:
改它:T&
小的:T
大的只读:const T&
要收下:T + move
void setAge(int age);void print(const std::string& s);void normalize(std::vector<int>& v);void setName(std::string name);C++ 参数传递的本质不是语法问题,而是:
真正的原则不是死记硬背,而是理解:
我是“借来看一眼”,
还是“要动它”,
还是“要收下它”。
理解这一点,你写出的函数签名就会自然、专业、工程化。