灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2175回复:0

[C++技术]c++练习:腾讯的一个笔试题及答案

楼主#
更多 发布于:2012-09-06 11:34


观察下面一段代码:
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
ClassCaObject;
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
关于pA,pB,pC的取值,下面的描述中正确的是:
A.pA,pB,pC的取值相同.              B.pC=pA+pB
C.pA和pB不相同                     D.pC不等于pA也不等于pB
解答:PA=PC PB的地址比他们都大点
实际运行一下,选C,
因为
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
这三行代码实际等价于:
ClassA* pA=static_cast<ClassA*>(;aObject);
ClassB* pB=static_cast<ClassB*>(;aObject);
ClassC* pC=&aObject;
存在隐式转换的,也就是说源代码等号右边虽然写法都一样,但编译器的解释是不一样的.



喜欢0 评分0
游客

返回顶部