如果我们在main之外提到函数声明(如下面的代码中所述),它就可以了。但是如果我在main中提到函数声明,如下面的代码所示,那么在运行时,无论提供什么值(整数或浮点类型),只调用int作为参数类型的区域,即。无论提供的数据类型如何,只重复调用一种类型的函数(此处为area(int))。为什么会发生这种情况,函数声明有什么问题,我希望它能够被提升。谢谢。事先谢谢。
#include<iostream.h>
#include<conio.h>
//void area(int);
//void area(float);
void main()
{
int a;
float b;
void area(int);
void area(float);
clrscr();
cout<<"enter the length or breadth of square";
cin>>a;
area(a);
cout<<"enter the radius of the circle";
cin>>b;
area(b);
getch();
}
void area(int x)
{
cout<<"area of square "<<x*x;
}
void area(float x)
{
cout<<"\narea of circle "<<3.14*x*x;
}
答案 0 :(得分:0)
如果在main中您只声明了一个类型为int
的参数的函数,则会出现您所描述的内容。例如
#include<iostream.h>
#include<conio.h>
void area(int);
void area(float);
int main()
{
int a;
float b;
void area(int);
clrscr();
cout<<"enter the length or breadth of square";
cin>>a;
area(a);
cout<<"enter the radius of the circle";
cin>>b;
area(b);
getch();
}
void area(int x)
{
cout<<"area of square "<<x*x;
}
void area(float x)
{
cout<<"\narea of circle "<<3.14*x*x;
}
在这种情况下,只会调用类型为int
的参数的函数,因为本地函数声明会隐藏全局命名空间中的函数声明。
否则,如果两个函数都在main中声明,并且只调用类型为int的参数的函数,则编译器会有错误。
考虑到函数main应具有返回类型int
,尽管某些编译器允许使用类型void。但是main的这种声明不符合C ++。