c++笔试题(继承问题,对象生成问题)-6-10
来源:互联网 发布:淘宝网集市商家热线 编辑:程序博客网 时间:2024/05/15 23:45
看看此程序运行结果:
#include<iostream>using namespace std;class A{public:void virtual f(){cout<<"A"<<endl;}};class B:public A{public:void virtual f(){cout<<"B"<<endl;}};int main(){A* pa=new A();pa->f();B* pb=(B *)pa;pb->f();delete pa,pb;pa=new B();pa->f();pb=(B *)pa;pb->f();return 0;}
运行结果:
A
A
B
B
通过结果看问题,
1.在A* pa=new A();中创建了一个A对象,之后将pa和pb指针指向这个对象,但是这始终是A对象,而pa,和pb只是指针,所以调用的都是A对象中的f()函数。
2.典型的多态问题。
存在一个疑惑:就创建了一个对象,delete pa,pb;怎么没有错
这里说一下public,protected和private继承的问题
1.public 继承
基类中的成员访问权限在子类中不变,子类生成的对象访问基类的成员权限不变
2.protected继承
基类中的public和protected成员在子类中变为protected
3.private
基类中的所有成员都在子类中变为private
注意:
在子类中的成员内部访问基类的成员权限是没有变的。
例子
#include<iostream>using namespace std;class A{public:void fA(){cout<<"fA()"<<endl;}};class B:private A{public:void fB(){fA();}};int main(){B b;b.fB(); //正确:打印fA()b.fA();//错误“A::fA”不可访问,因为“B”使用“private”从“A”继承return 0;}
- c++笔试题(继承问题,对象生成问题)-6-10
- java笔试问题(继承)
- C笔试问题
- 笔试题:C语言中的字符串问题
- 虚继承相关问题--笔试面试系列
- cpp笔试-virtual函数类继承问题
- String生成对象问题
- 对象继承extends个数问题
- 面向对象继承的问题
- 笔试题问题(二)
- 笔试遇到的两个问题 (c、c++)
- c ++中继承问题小结
- 子集生成问题-一道笔试题目
- 一步一步C#——2 概念性问题:类、对象、继承、多态、面向对象
- 笔试题--TopK问题
- [笔试题 10][c/c++]常对象,常函数
- 一个C笔试题引出一系列的问题
- 一个C笔试题引出一系列的问题
- Visual C++ 64 位迁移的常见问题
- 图片轮播(类似Flash)jquery
- 如何:针对 64 位平台配置 Visual C++ 项目
- linux kernel data struct: KMP算法实现
- JVM加载class文件的原理
- c++笔试题(继承问题,对象生成问题)-6-10
- java中的参数传递问题
- VOID N1
- JavaScript 入门
- struts2 + ajax + json的结合使用,实例讲解
- java中的API
- 【解惑】Java类型间的转型
- sizeof不是函数,C语言中sizeof的陷阱
- Overview of the High Efficiency Video Coding(HEVC) Standard之五