当前位置:七七学习网文档大全求职指南求职笔试面试笔试题目今天的一个笔试题目» 正文

今天的一个笔试题目

[10-10 21:21:19]   来源:http://www.77xue.com  笔试题目   阅读:8962
概要: // doGetData的虚函数特性不起作用, //返回A::m_data = 0cout<<c.B::doGetData()<<endl; // 直接调用B::doGetData, 返回B::m_data = 1cout<<c.C::doGetData()<<endl; // 直接调用B::doGetData // (因为C没有override doGetData), 结果同上system("PAUSE");return 0;}【dai_weitao】:cout<<c.GetData()<<endl; // 调用B的doGetData
今天的一个笔试题目,标签:驾照笔试题目,腾讯笔试题目,http://www.77xue.com
                                         // doGetData的虚函数特性不起作用, 
                                         //返回A::m_data = 0

cout<<c.B::doGetData()<<endl;   // 直接调用B::doGetData, 返回B::m_data = 1
cout<<c.C::doGetData()<<endl;   // 直接调用B::doGetData 
                                         // (因为C没有override doGetData), 结果同上

system("PAUSE");

return 0;
}


【dai_weitao】:
cout<<c.GetData()<<endl;       // 调用B的doGetData, 返回的是C中B对象的data 1
cout<<c.A::GetData()<<endl;    // 同上
cout<<c.B::GetData()<<endl;    // 同上
cout<<c.C::GetData()<<endl;    // 同上
cout<<c.doGetData()<<endl;     // 同上
cout<<c.A::doGetData()<<endl;  // 调用A的doGetData, 返回的是C中A对象的data 0
cout<<c.B::doGetData()<<endl;  // 同上上
cout<<c.C::doGetData()<<endl;  // 同上

原因是在构造C对象时调用B, A的构造函数.
而A的函数GetData调用自己的虚函数do, B重载了A的虚函数.

C的对象结构由两部分组成:
C::m_data和B类型对象.
B的对象结构由两部分组成:
B::m_data和A类型对象.
A的对象结构由三部分组成:
A::m_data, vptr, vtable

C::m_data = 10.
B::m_data = 1.
A::m_data = 0.
vtable中doGetData指针指向B::doGetData.

所以除了调用A::doGetData, 都会返回B::m_data.

【hamlet0168】:
等我有空给你画张图吧,比较直接……

【ccsuwz】:
哎  不懂 为什么C.GetData()不是调用的A::doGetData();

【Tracy2007】:
C的GetData()是从B里继承来的吧

【Tracy2007】:
纯语法题........

【colorapple】:
多层的虚继承调用的时候,应该是调用离派生类最近的继承类的函数吧 ~~?

【gx_055】:
同意楼上的,是虚继承和派生问题,Visual C++程序设计书上有类似的题目

【gx_055】:
还有就是构造和析构函数问题,差点忘了。

【BEYOND_Q】:
#include <iostream>
using namespace std;

 class A     
 {   
  protected:
  int m_data;
  public:     

上一页  [1] [2] [3] [4]  下一页


Tag:笔试题目驾照笔试题目,腾讯笔试题目求职指南 - 求职笔试面试 - 笔试题目

《今天的一个笔试题目》相关文章

联系我们 | 网站地图 | 范文大全 | 管理知识 | 教学教育 | 作文大全 | 语句好词
Copyright http://www.77xue.com--(七七学习网) All Right Reserved.
1 2 3 4 5 6 7 8 9 10