0

当我们使用printf()不同数量的参数时,例如

printf("Hello");

printf("%d",a);

printf("%d%d",b,c);

为什么这不称为“重载”(使用相同的方法执行不同的任务)?如果是重载,那么为什么不将 C 视为面向对象的编程语言?

4

4 回答 4

8

这称为可变参数函数,而不是重载。重载与面向对象无关。

于 2012-08-26T15:05:56.017 回答
3

为什么这不称为“重载”

因为您使用的是相同的功能

int printf(const char *restrict format, ...);

重载的一个先决条件是具有相同名称的不同函数/方法。在这里,我们只有一个功能,尽管由于 varargs 功能而非常通用。

于 2012-08-26T15:05:53.587 回答
2

这不是方法重载。它只是printf接收一个可选vargs的作为第二个参数,即变量参数列表。

int printf ( const char * 格式, ... );

将格式化数据打印到标准输出 将格式化为格式参数指定的数据序列写入标准输出 (stdout)。在格式参数之后,该函数需要至少与格式中指定的一样多的附加参数。

于 2012-08-26T15:05:43.073 回答
0

面向对象编程是指一种范式,包括封装、消息传递、继承和多态。换句话说,OO 意味着定义一个class具有被覆盖virtual的函数。这与重载不同,重载是根据参数的类型在函数中执行不同的操作。

printf()所做的既不是重载也不覆盖。这是一个可变长度的参数列表。

于 2012-08-26T15:13:28.807 回答