当我们使用printf()
不同数量的参数时,例如
printf("Hello");
printf("%d",a);
printf("%d%d",b,c);
为什么这不称为“重载”(使用相同的方法执行不同的任务)?如果是重载,那么为什么不将 C 视为面向对象的编程语言?
当我们使用printf()
不同数量的参数时,例如
printf("Hello");
printf("%d",a);
printf("%d%d",b,c);
为什么这不称为“重载”(使用相同的方法执行不同的任务)?如果是重载,那么为什么不将 C 视为面向对象的编程语言?
这称为可变参数函数,而不是重载。重载与面向对象无关。
为什么这不称为“重载”
因为您使用的是相同的功能:
int printf(const char *restrict format, ...);
重载的一个先决条件是具有相同名称的不同函数/方法。在这里,我们只有一个功能,尽管由于 varargs 功能而非常通用。
面向对象编程是指一种范式,包括封装、消息传递、继承和多态。换句话说,OO 意味着定义一个class
具有被覆盖virtual
的函数。这与重载不同,重载是根据参数的类型在函数中执行不同的操作。
printf()
所做的既不是重载也不是覆盖。这是一个可变长度的参数列表。