|
有几道题还是比较经典。
#include <iostream>
using namespace std;
void func(float f)
{
printf("%f\n",f);
}
void func(int i)
{
printf("%d\n",i);
}
int main(int argc,char *argv[])
{
func(1.2);
return 0;
}
以上代码在VC中编译有一条错误ambiguous call to overloaded function,问题在于函数重载存在二义性。
解决方法:
(1)、将void func(float f)改为void func(double f)
(2)、将void func(float f)加上一个未定义参数,如void func(float f,int),在main函数中如此调用:
func(1.2,0);
以上两种方法均能得到正确结果。
#include <iostream>
using namespace std;
int count=0;
class object
{
public:
object(){ count++; }
~object(){ count--; }
};
int main(int argc,char *argv[])
{
object A,B,C;
printf("%d\n",count);
object D;
return 0;
}
正确结果:3。
首先建立3个对象,分别调用3次构造函数,C的构造函数调用后count值应是3。 |
|