腾讯2011一道父类指针和子类指针转化的题目
来源:互联网 发布:sql loader 522 编辑:程序博客网 时间:2024/06/06 04:08
class ClassA{public: virtual ~ClassA(){} virtual void FunctionA(){}};class ClassB{public: virtual void FunctionB(){}};class ClassC :public ClassA , public ClassB {};
关于pA,pB,pC的取值,下面的描述中正确的是:
A、pA,pB,pC的取值相同。
B、pC=pA+pB
C、pA,pB不相同
D、pC不等于pA也不等于pB
ClassC对象构建的时候,先调用A的构造函数,构造A,后调用B的构造函数构造B,最后调用C的构造函数构造C独有的数据。所以在内存中pA和pC都指向对象在内存中的起始位置,pA=pc。但是pB指向对象ClassC时,只是指向ClassB那一部分。所以,答案选择C。
6.参照1.5的代码,假设定义了 ClassA* pA2,下面正确的代码是:
A.pA2=static_cast<ClassA*>(pB);
B.void* pVoid=static_cast<void*>(pB);
pA2=static_cast<ClassA*>(pVoid);
C.pA2=pB;
D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));
A.pA2=static_cast<ClassA*>(pB);
B.void* pVoid=static_cast<void*>(pB);
pA2=static_cast<ClassA*>(pVoid);
C.pA2=pB;
D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));
这道题目涉及到两个知识点,一个是父类指针和子类指针之间转换的问题,一个是static_cast的使用。
下面讲解下这两个知识点,相信看完后上面的题目就很明确了。
(1)首先子类指针转换为父类指针是可以的,父类指针使用时简单的截断内存就可以。但是父类指针转换为子类指针是不安全的,因为在使用子类指针访问父类对象时可能超出对象的内存空间。
(2)static_cast的使用。
- 基类和子类之间转换:其中子类指针转换成父类指针是安全的;但父类指针转换成子类指针是不安全的。(基类 和子类之间的动态类型转换建 议用dynamic_cast)
- 基本数据类型转换。enum, struct, int, char, float等。static_cast不能进行无关类型(如非基类和子类)指 针之间的转换。
- 把空指针转换成目标类型的空指针。
- 把任何类型的表达式转换成void类型。
- static_cast不能去掉类型的const、volitale属性(用const_cast)。
借用一段实例代码如下:
int n = 6;
double d = static_castdouble>(n); // 基本类型转换
int *pn = &n;
double *d = static_castdouble *>(&n) //无关类型指针转换,编译错误
void *p = static_castvoid *>(pn); //任意类型转换成void类型
答案应该是CD。
7.参照1.5的代码,下面那一个语句是不安全的:
A.delete pA B.delete pB C.delete pC
A.delete pA B.delete pB C.delete pC
都是不安全的,运行时都会出错,因为ABC都不是动态分配的。
0 0
- 腾讯2011一道父类指针和子类指针转化的题目
- 一道关于编译和指针的题目
- 父类指针,子类指针
- 一道指针题目
- 103 一道题目玩转指针数组和二级指针
- c++子类和父类指针的转换
- 关于指针加减的一道题目
- 一道指针相关题目的跟踪
- 一道关于虚函数指针的题目
- c++父类指针和子类指针相转换:
- 指针数组和数组指针的使用 (一道有趣的题目)
- 类指针强制转化成子类, 子类的方法竟然可用.[VC++视频教程]
- 矩阵相乘 指针指针 网上看到的一道题目
- 父类指针的步长和子类指针的步长不一样
- 父类指针访问子类的成员函数指针
- 父类指针向子类指针的强制类型转换
- 父类指针向子类指针的强制类型转换
- c++子类指针,父类指针,对象的关系
- UML之包图
- 安装Android SDK失败了的看过来(东软开源镜像介绍)
- UML之序列图
- 为什么电脑特效这么贵
- Source Insight函数调用关系显示设置
- 腾讯2011一道父类指针和子类指针转化的题目
- UML之协作图
- quick-cocos2d-x游戏开发【12】——硬件按键事件
- [寒江孤叶丶的CrossApp之旅_06][入门系列]CrossApp控件之Label标签。什么是AnchorPoint锚点
- Source Insight使用配置
- JPA的双向一对多和双向一对一关联关系
- PHP页面跳转几种实现技巧
- 第十一次codeforces竞技结束 #262 Div 2
- dll的制作与调用