【发布时间】:2013-04-14 01:48:42
【问题描述】:
既然 C 不支持方法重载,怎么可能有像 open 这样显式提供两种不同签名的方法:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
我的意思是,printf 支持使用 vargs 的各种参数,但除了使用 vargs 本身的参数之外没有明确的签名——否则应该有一个签名 for each possible printf 调用。然而,open()——据我推测——是用 C 语言编写的,并提供了两个显式签名。
我并没有真正了解这些功能的实现方式。有人可以举一个小例子来说明一个函数如何:
void foo() { printf("bar\n"); }
void foo(int x) { printf("bar %d\n", x); }
会在 C 中实现吗?
【问题讨论】:
-
我之前也问过类似的问题,请参考:[这里][1][1]:stackoverflow.com/questions/3953895/…
-
@GreenCode 我搜索了方法重载,但你的问题没有出现;这就是我问的原因。 +1 感谢您的参考。
标签: c overloading