我了解指针与引用的语法和一般语义,但是我应该如何确定何时在API中使用引用或指针多少合适? 自然,有些情况需要一个或另一个(operator++需要一个引用参数),但是总的来说,我发现我更喜欢使用指针(和const指针),因为语法很清楚地表明,变量是以破坏性方式传递的。 例如下面的代码: void add_one(int& n) { n += 1; } void add_one(int* const n) { *n += 1; } int main() { int a = 0; add_one(a); // Not clear that a may be modified add_one(&a); // 'a' is clearly being passed destructively } 使用指针,总是(更)明显的是怎么回事,所以对于API和诸如此类的情况,其中最关注清晰度的指针不是比引用更合适吗?这是否意味着仅在必要时才使用引用(例如operator++)?两者之间是否存在性能问题? 编辑(已过时): 除了允许使用NULL值和处理原始数组外,选择还取决于个人喜好。我接受了下面引用Google的C ++样式指南的答案,因为他们提出的观点是“引用可能会造成混淆,因为引用具有值语法但具有指针语义。” 由于清理不应该为NULL的指针参数需要进行额外的工作(例如,add_one(0)将在运行时调用指针版本并在运行时中断),因此从可维护性的角度来看,使用必须在存在对象的引用是有意义的,尽管这很遗憾。失去语法清晰度。