参数在编译器决定
2015-09-05 10:57
204 查看
class A { public: virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; } virtual void test() { func(); } }; class B:public A { public: void func(int val = 0) { std::cout << "B->" << val << std::endl; } }; int main(int argc,char* argv[]) { B*p = new B; p->test(); return 0; } A:A->0 B:B->1 C:A->1 D:B->0
答案:B
解析:由于p指向了继承类B的对象,所以,在调用A中的test之后,虚函数func()会调用继承类B的函数,而默认形参仍然会使用test所在的类A的形参1,从而输出B->1。
**以上来自julyedu:http://ask.julyedu.com/question/704
由于参数是在编译期就已经决定的,因此参数应该取A得形参1.
相关文章推荐
- n级台阶问题
- POJ 2255 二叉树由前序遍历中序遍历得到后序遍历
- Android 实现适配器中的子控件与Activity通信
- Tomcat基本知识
- Python爬虫框架--pyspider初体验
- [Leetcode-263] Ugly Number(丑陋数)
- 那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)
- Tarjan算法求解最近公共祖先问题
- 【POJ2289】【多重匹配】【二分】【模板】
- Java 解析chm文件实战(原创)
- 剑指offer——面试题42:(一)翻转单词顺序
- PHP之——官方手册下载地址
- 乱七八糟记事本
- HDU1556 color the ball(区间修改,单点查询)
- 用户及用户组管理:useradd,psswd,groupadd
- 『细节』是什么
- 『细节』是什么
- 黑马程序员——CSS
- C++11 auto和decltype推导规则
- 数据结构之反黄牛火车票订票系统