这段代码输出什么?说明了什么问题?
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就会一直传递下去。
相关文章推荐
- 欢迎争讨继承的问题,下面三段代码分别输出什么?欢迎留言
- Java中的多态调用问题,下面代码输出是什么?
- Java中的多态调用问题,下面代码输出是什么?
- Java中的多态调用问题,下面代码输出是什么?
- Java中的多态调用问题,下面代码输出是什么?
- 这段代码有什么问题吗? 关于IHTMLLinkElement的。
- 以下代码的输出结果是什么?
- 代码高处走 从VC6到VC9移植代码问题说明
- 代码输出问题
- 请解释一下CRC是什么意思?并说明其应用场合?根据下面的描述完成CRC16的C代码。
- HackerRank,一行代码解决输出问题
- Java - 类ExampleA继承Exception,类ExampleB继承ExampleA。有如下代码片断:请问执行此段代码的输出是什么?
- 代码输出问题
- 输出参数out和引用参数ref区别(代码解释说明)
- 问题三:类的头文件和实现文件分别写什么(用向量表示RGB输出“第一张图片”)
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?
- 以下代码的输出结果是什么?
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- 代码设置输出缓存头的一些问题记录