C++ 函数重载,给我解释一下 啊
#include<iostream.h> void add(); void add(int a=1,int b=2); void main() { add(); } void add() { cout<<"hello"<<endl; } void add(int a,int b) { cout<<a+b<<endl; } 以上编译时错误,不知道为什么 还有当注释掉void add();函数后就能运行了。这时没有人为的为add传入参数,所以add自动调用声明时的设定的实参,我想知道,如果我在定义一个不带参数的add()进行函数重载,看看,再执行add();会不会执行重载的add(),于是就出现了编译错误,为什么呢。
这个题目考察的是函数的默认参数问题,迷惑性很强,有点难度。你刚好中了该题的计。 请你将重心放在函数默认参数问题上。 当函数有默认参数,那么调用该函数时是可以省略参数的,如果省略参数,函数将取默认值。 考察你的程序,void add(int a=1,int b=2); 是带有默认参数的,因此,调用他时有多种形式,如:当你用add(3)时,他实际上是执行的add(3,2);当你用add()时,他实际执行的是add(1,2) 当有默认参数的函数时,编译器在分析时会将该函数的所有形式列举出来保存在函数表中,void add(int a=1,int b=2)的形式有:add(),add(int),add(int,int)。
你会发现,你用其中任何一种形式调用都是正确的。这说明上述形式实际存在。因此上述三种形式的函数都不能重载了。请注意,当你重载了上述函数而不调用他们时,编译器可能会让你通过,这要看你编译器的设置了。 把默认参数除掉就可以了。 希望你看懂了,有问题发消息给我。
#include void add(); void add(int, int); void main() { add(); } void add() { cout<<"hello"<
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>