CppCoreGuidelines Con.3 默认传递指向常量的指针和引用给函数
19 August 2023
“By default, pass pointers and references to const
s”
理由
避免函数意外的修改了数值。被调用的函数不会修改输入参数的话,更容易对程序进行分析。
例子
void f(char* p); // does f modify *p? (assume it does) void g(const char* p); // g does not modify *p
注意
并不是说给函数传递一个指向非 const
的指针或引用不好。但是只能传递给确实要修改传入对象的函数。
注意
不要把 const
强制类型转换掉。见 ES.50: Don’t cast away const。
强化
- 标记传入的参数是指向非
const
的指针或引用,而函数却又不会修改传入对象。 - 标记用强制类型转换把传入的是指向
const
的指针或引用转换为指向非const
的情况。