[C++笔试]类及继承的题目
来源:互联网 发布:佳能格式转换软件 编辑:程序博客网 时间:2024/06/09 20:17
1.
#include "stdio.h"class A{public:int _a;A(){_a = 1;}void print(){printf("%d", _a);}};class B : public A{public:int _a;B(){_a = 2;}};int main(){B b;b.print();printf("%d", b._a);while (1);return 0;}请问输出是什么?
答案:12
原因:
子类存在与父类同名的成员变量,则子类屏蔽父类的同名成员变量,但给孩子类中没有定义print函数,所以会按照就近原则去寻找父类中是否有print函数。恰好父类中有这个函数,于是调用父类的print函数b.print(),而这个函数会调用父类的a变量。
若子类b中也有print函数,请问结果如何?
即题目改成下面的程序:
#include "stdio.h"class A{public:int _a;A(){_a = 1;}void print(){printf("%d", _a);}};class B : public A{public:int _a;B(){_a = 2;} void print() { printf("%d", _a); }};int main(){B b;b.print();printf("%d", b._a);while (1);return 0;}答案:22,
因为子类中已有print,不需要到父类中寻找。
2.
假定有类AB,有相应的构造函数定义,能正确执行
AB a(4),b(5),c[3],*p[2]={&a,&b};
语句,请问执行完此语句后共调用该类的构造函数次数为___
答案:5
解释:
只有给对象分配内存才调用构造函数 AB a(4) 定义对象a, 调用了带一个参数的构造
AB b(5)跟上面的性质类似, 调用了带一个参数的构造
AB c[3] 跟上面的性质类似, 定义对象数组,调用无参构造3次
AB *p这至是一个指针,没有指向任何空间,更么有分配内存,不会调构造
阅读全文
0 0
- [C++笔试]类及继承的题目
- 分享一道类继承的笔试题目
- 分享一道类继承的笔试题目
- C及C++笔试题目
- 有趣的C笔试题目(收集)
- [C#]类及继承
- C语言笔试题目
- C#笔试题目
- C语言笔试题目
- C语言笔试题目
- C/C++笔试题目
- C 笔试题目
- c/c++笔试题目
- C/C++笔试题目
- c/c++笔试题目
- C++/C笔试面试题目大大的集合
- C++/C笔试面试题目大大的集合
- 百度笔试题目及答案
- JS中的prototype原型
- 一个low到爆的快排
- 常用的 myslqi 函数 || 方法 剖析
- 线程化TCP
- 二叉搜索树---递归及非递归
- [C++笔试]类及继承的题目
- 简单了解一下JavaScript正则表达式
- JSON开发笔记(二)—— JSON Schema实战(上)
- SystemUi音量显示笔记
- W3C的理解概括
- 自定义spinner下拉框样式
- imrotate
- 次小生成树 prim求法入门
- node.js操作MySQL数据库