August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
当你希望将一个变量的值改为由函数计算出的结果时,你有三种选择。例如:
你会如何选择呢?我们认为返回值是最明显的方法(因此最不容易出错),例如:
我们倾向于对小对象(例如一个int)使用这种风格。此外,如果一个“大对象”有移动构造函数(见13.3.4节),我们也可以高效地反复拷贝它。
我们如何选择使用引用参数还是指针参数呢?不幸的是,两者都有自己的吸引力和问题,因此没有明确的答案。你需要根据具体函数及其可能的用途来决定。
使用指针参数警告编程者有些东西可能改变。例如:
在incr_p(&x)中需要使用&,这警告用户x可能改变。与之对比,incr_p(x)就是“看起来无辜的”。这导致很多人稍微偏爱使用指针。
另一方面,如果你使用指针作为函数的参数,需要小心某些人可能用空指针(即nullptr)调用函数。例如:
这显然很讨厌。编写incr_p()的人可以防止它:
但是现在incr_p()不像以前看起来那么简单、有吸引力了。第5章讨论如何处理糟糕的参数。与之相比,引用的用户(例如incr_r())有权假设引用的确指向一个对象。 ...
Read now
Unlock full access