4. 参数传递与返回值
约 317 字大约 1 分钟
2025-09-04
4.1 参数传递:pass by value vs. pass by reference (to const)
尽量以 pass-by-reference-to-const 替换 pass-by-value。前者通常比较高效,并可避免切割问题(slicing problem)。当然,以上规则并不适用于内置类型,以及STL的迭代器和函数对象。对它们而言 pass-by-value 往往比较适当。
参考《Effective C++》条款20:宁以 pass-by-reference-to-const 替换 pass-by-value
4.2 返回值传递:return by value vs. return by reference (to const)
和上小节一样,通常也建议返回reference,除非是需要返回一个local object,在经过作用域后局部对象的生命已经结束了,此时返回指向它的指针没有意义。因此绝不要返回 pointer 或 reference 指向一个 local stack 对象,或返回 reference 指向一个 heap-allocated 对象,或返回 pointer 或 reference 指向一个 local static 对象而有可能同时需要多个这样的对象。
参考《Effective C++》条款21:必须返回对象时,别妄想返回其 reference
4.3 相同 class 的各个 objects 互为 friends (友元)
很怪,object c1可以调用object c2的成员函数,而不涉及到c2的计算,但也被允许。