用const
修饰变量或方法,从而告诉编译器这些都是不可变的,有助于编译器优化代码,并帮助开发人员了解函数是否有副作用。此外,使用const &
可以防止编译器复制不必要的数据。John Carmack对```const```的评论[2]值得一读。
// Bad Idea
class MyClass
{
public:
void do_something(int i);
void do_something(std::string str);
};
// Good Idea
class MyClass
{
public:
void do_something(const int i);
void do_something(const std::string &str);
};
仔细考虑返回类型
-
Getters(成员变量读取API)
-
正常情况下,通过返回值读取成员变量时,使用
&
或const &
返回值可以显著提高性能 -
按值返回更有利于线程安全,如果返回的值就是为了复制使用,就不会有性能损耗
-
如果API返回值使用协变类型(covariant return types),必须返回
&
或*
-
-
临时值和局部值
-
始终按值返回
-
不要用const引用传递和返回简单类型
// Very Bad Idea
class MyClass
{
public:
explicit MyClass(const int& t_