C++.我们可以有相同的命名功能,但在不同的文件中?

han*_*k99 -3 c++ compiler-construction function

可以说我有三个.cpp文件和两个头文件.

第一档:

它是main.cpp,它调用所有函数和东西.包含2个头文件.


第二档:

包含两个功能:

int print(int num2, int num1)
Run Code Online (Sandbox Code Playgroud)

int update(int num1)
Run Code Online (Sandbox Code Playgroud)

第3档:

包含三个功能:

int calculate(int num2, int num3, int num4)
Run Code Online (Sandbox Code Playgroud)

int update(int num2, char random)
Run Code Online (Sandbox Code Playgroud)

int divied(int all)
Run Code Online (Sandbox Code Playgroud)

++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++

正如您所知,第二个和第三个文件具有一个相同的命名函数"int update",但在一个文件中它有1个参数,而在另一个文件中它有两个.

我能打电话给我想要的人吗?我会收到编译错误吗?我现在无法测试它,因为我正在使用库计算机.

Bal*_*Pal 5

从技术上讲,是的,你会的.具有不同签名的函数形成过载集,并且在调用时将通过匹配传递的实际参数的数量和类型来选择适当的函数.

OTOH在全局命名空间中使用这样的名称是一种可怕的做法.这只是偶然发生的事故 - 有人会通过拼写错误称之为非预期的功能.

真正的重载集不是随机形成的,而是由设计形成的:即具有相同语义的函数,只使用不同类型的弹药.他们的目的是在联盟中工作,并且在回答"哪一个被称为"是"我不在乎"时最有效.无论编译器选择哪个都能完成正确的工作.