首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类的内存模型

2012-04-23 
类的内存模型,求助C/C++ code#include stdafx.h#include iostreamusing namespace stdclass Base{pub

类的内存模型,求助

C/C++ code
#include "stdafx.h"#include <iostream>using namespace std;class Base{public:    void foo1(void){}    void foo2(void){}private:    double m_fMember1;    int m_nMember2;};typedef void (Base::*CLASS_FUNC)(void);int _tmain(int argc, _TCHAR* argv[]){    Base base;    cout<<&base<<endl;    cout<<&(base.m_fMember1)<<endl;    cout<<sizeof(double)<<endl;    cout<<&(base.m_nMember2)<<endl;    CLASS_FUNC pFunc=&Base::foo1();    unsigned *tmp=(unsigned*)&pFunc;    cout<<hex<<*tmp<<endl;    pFunc=&Base::foo2();    tmp=(unsigned*)&pFunc;    cout<<hex<<*tmp<<endl;    return 0;}

//base.m_fMember1
//base.m_nMember2
//Base::foo1()
//Base::foo2()
这些为什么是不可访问的,不是实例化了base类了吗?

[解决办法]
1,2 语法限制.
3,4 只有静态成员函数才能这样访问
[解决办法]
1,2 语法限制.
3,4 只有静态成员函数才能这样访问 

[解决办法]
1.2,在VS里面貌似有这种语法扩展
[解决办法]
//base.m_fMember1
//base.m_nMember2
不能访问是因为private
只有类的内部能访问,类的外部无法访问的

//Base::foo1()
//Base::foo2()

应该写成base.foo1()
非静态函数一般要用一个对象来调用
静态函数可以用Base::foo1()


[解决办法]
同m1c2f4843,完全正确,或许是你粗心 或许是C++语法不扎实

热点排行