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

Define two functions with the same signature in C++

本文关键字:函数 两个 定义 c++      更新时间:2023-10-16

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

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

这些不是定义,它们是(冗余的)声明。如果您通过提供函数体将它们都转换为定义,那么您肯定会从编译器获得错误。

C和c++中的"声明"只是告诉名称和该名称的类型。

C和c++中的"定义"实际上使事物存在。为变量分配空间,设置初始值,生成函数代码等(好吧,这是一个稍微简化的版本)。

这两个是声明,因为它们缺少函数体。因为它们是函数,extern是不需要的,所以它们是相等的。只要不存在冲突,你可以多次声明同一件事。由于函数在c++中允许基于参数的重载,所以只有当你创建具有相同参数但返回类型不同的函数时,才会出现冲突。对于变量或C函数,您不能有名称冲突。