繁体   English   中英

在C ++中定义具有相同签名的两个函数

[英]Define two functions with the same signature in C++

为什么我们可以通过以下方式定义具有相同签名的两个函数?

extern void print(int *ia, int sz);
void print(int *array, int size);

这些不是定义,它们是(冗余) 声明 如果通过提供一个函数体将它们都变成定义,那么您肯定会从编译器中得到一个错误。

在C和C ++中,“声明”仅说明名称和名称类型。

C和C ++中的“定义”实际上使事物存在。 为变量分配空间,并设置初始值,生成功能代码等(好的,这是简化的版本)。

这两个是声明 ,因为它们缺少函数体。 并且由于它们是函数,因此extern是不必要的,因此它们是相等的。 只要没有冲突,您可以多次声明同一件事。 并且由于函数允许基于C ++中的参数进行重载,因此,如果您使函数具有相同的参数但返回类型不同,则只会产生冲突。 使用变量或C函数时,不能有名称冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM