您的位置:首页 > 编程语言

这段代码输出什么?说明了什么问题?

2011-07-01 14:52 316 查看
#include <iostream>
using namespace std;
class A{
public:
virtual void call(int a=4) const
{
cout << "A" << a << endl;
}
};
class B:public A{
public:
void call(int a=2) const
{
cout << "B" << a*a << endl;
}
};
class C:public B{
public:
void call(int a=3) const
{
cout << "C" << a*a*a << endl;
}
};
void print(const A &a)
{
a.call();
}
int main()
{
A a;
print(a);
B b;
print(b);
C c;
print(c);
int d;
cin >> d;
}


选中下面空白查看结果

这段代码输出了A4B16C64,说明了两个问题,一个是虚函数的默认形参,还有一个就是虚函数本身,虽然B没有声明virtual,但是基类定义了virtual,virtual就会一直传递下去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐