爱问知识人 爱问教育 医院库

C 函数重载,给我解释一下 啊

首页

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(),于是就出现了编译错误,为什么呢。

提交回答
好评回答
  • 2008-02-20 20:25:13
          这个题目考察的是函数的默认参数问题,迷惑性很强,有点难度。你刚好中了该题的计。
        请你将重心放在函数默认参数问题上。
        当函数有默认参数,那么调用该函数时是可以省略参数的,如果省略参数,函数将取默认值。
        
        考察你的程序,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)。
      你会发现,你用其中任何一种形式调用都是正确的。这说明上述形式实际存在。因此上述三种形式的函数都不能重载了。请注意,当你重载了上述函数而不调用他们时,编译器可能会让你通过,这要看你编译器的设置了。 把默认参数除掉就可以了。 希望你看懂了,有问题发消息给我。
      

    o***

    2008-02-20 20:25:13

其他答案

    2008-02-20 13:02:53
  • #include
    void add(); 
    void add(int, int);
     
    void main() 
    { 
    	add(); 
    }
    void add() 
    { 
    	cout<<"hello"<
    		                
    		            

    p***

    2008-02-20 13:02:53

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 173-192
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):