【发布时间】:2013-02-24 05:06:32
【问题描述】:
我喜欢尽可能将偶数值参数声明为const,通过搜索SO,我发现that's not too uncommon。像这样:
int add(const int a, const int b)
{
...
}
但我想知道:const for values 是我的函数的实现细节,而不是它的接口的一部分。所以把它放到原型中似乎没有必要。
上述函数的这个原型似乎工作得很好:
int add(int a, int b);
但我听说过一些问题,例如将 main 函数的 argc 声明为 const 可能会导致问题:
int main(const int argc, const char* const argv[])
那么这是否意味着int add(int a, int b) 和int add(const int a, const int b) 根本就不一样?
如果技术上没问题,我应该这样做吗?我也可以在原型中省略变量名,但我没有,所以也许我也不应该省略const?
【问题讨论】:
-
顺便说一句,不要漏掉界面上的名字。当人们希望使用您的函数时,他们会首先查看(有时甚至无法获得定义,具体取决于您的代码的组织或分发方式)。有时(不幸的是)那里的名称是唯一的文档。
-
使用
int add(int a, int b);,编译器有足够的能力为调用具有兼容参数的任何函数生成正确的代码。如果你再定义int add(const int a, const in b) {},那就是兼容的,并且声明是有效的。
标签: c++ c header constants function-prototypes