C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
2011-08-12 14:56
1246 查看
本文转自 /article/1514937.html
源代码如下:
view
plain
#include <iostream>
using namespace std;
class CSimple
{
public:
//静态成员变量
static const int sx = 0;
//静态函数
static void SF1()
{
}
public:
//成员变量
int x;
public:
//成员函数
void F1()
{
cout<<"I'm from CSimple::F1()"<<endl;
}
void F2()
{
cout<<"I'm from CSimple::F1()"<<endl;
}
public:
//构造函数,C++语法不允许获取构造函数和析构函数地址,要分析其地址,只能查看生产的汇编代码了。
CSimple()
{
}
//析构函数
~CSimple()
{
}
};
typedef void (CSimple::*Func)();
union
{
Func f;
void *addr;
}ut;
int main(int argc, char** argv)
{
cout<<"main()函数的地址是 :"<<std::hex<<std::showbase<<main<<endl;
ut.f = &CSimple::F1;
cout<<"成员函数F1()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
ut.f = &CSimple::F2;
cout<<"成员函数F2()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
cout<<"静态成员函数SF1()的地址是:"<<std::hex<<std::showbase<<CSimple::SF1<<endl;
cout<<"静态成员变量sx的地址是 :"<<std::hex<<std::showbase<<&CSimple::sx<<endl;
cout<<"CSimple类型实例的大小 :"<<sizeof(CSimple)<<endl;
CSimple* pObj = new CSimple();
cout<<"对象指针变量的地址是 :"<<std::hex<<std::showbase<<&pObj<<endl;
cout<<"新建对象的地址是 :"<<std::hex<<std::showbase<<pObj<<endl;
cout<<"成员变量的地址是 :"<<std::hex<<std::showbase<<&pObj->x<<endl;
//CSimple *p = new CSimple();
//(p->*f)();
delete pObj;
cin>>argc;
return 0;
}
运行结果:
源代码如下:
view
plain
#include <iostream>
using namespace std;
class CSimple
{
public:
//静态成员变量
static const int sx = 0;
//静态函数
static void SF1()
{
}
public:
//成员变量
int x;
public:
//成员函数
void F1()
{
cout<<"I'm from CSimple::F1()"<<endl;
}
void F2()
{
cout<<"I'm from CSimple::F1()"<<endl;
}
public:
//构造函数,C++语法不允许获取构造函数和析构函数地址,要分析其地址,只能查看生产的汇编代码了。
CSimple()
{
}
//析构函数
~CSimple()
{
}
};
typedef void (CSimple::*Func)();
union
{
Func f;
void *addr;
}ut;
int main(int argc, char** argv)
{
cout<<"main()函数的地址是 :"<<std::hex<<std::showbase<<main<<endl;
ut.f = &CSimple::F1;
cout<<"成员函数F1()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
ut.f = &CSimple::F2;
cout<<"成员函数F2()的地址是 :"<<std::hex<<std::showbase<<ut.addr<<endl;
cout<<"静态成员函数SF1()的地址是:"<<std::hex<<std::showbase<<CSimple::SF1<<endl;
cout<<"静态成员变量sx的地址是 :"<<std::hex<<std::showbase<<&CSimple::sx<<endl;
cout<<"CSimple类型实例的大小 :"<<sizeof(CSimple)<<endl;
CSimple* pObj = new CSimple();
cout<<"对象指针变量的地址是 :"<<std::hex<<std::showbase<<&pObj<<endl;
cout<<"新建对象的地址是 :"<<std::hex<<std::showbase<<pObj<<endl;
cout<<"成员变量的地址是 :"<<std::hex<<std::showbase<<&pObj->x<<endl;
//CSimple *p = new CSimple();
//(p->*f)();
delete pObj;
cin>>argc;
return 0;
}
运行结果:
相关文章推荐
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- C++程序运行时内存布局之----------局部变量,全局变量,静态变量,函数代码,new出来的变量
- C++程序运行时内存布局之----------局部变量,全局变量,静态变量,函数代码,new出来的变量
- C++程序运行时内存布局之----------局部变量,全局变量,静态变量,函数代码,new出来的变量
- c++中静态成员变量 静态成员函数 全局变量与静态函数的关系 字符串中括号的匹配编程 (笔试经历)
- C++程序运行时内存布局之----------无继承情况下的虚函数
- C++程序运行时内存布局之----------空类实例
- C++程序运行时内存布局之----------空类实例
- C++程序运行时内存布局之----------无继承情况下的虚函数
- C++程序运行时内存布局之----------空类实例
- 单实例中对静态成员函数及变量的回顾
- C++程序运行时内存布局
- C++程序运行时内存布局之----------this到底是什么
- C++程序运行时内存布局之----------this到底是什么?
- C++静态成员变量和静态成员函数
- c++静态成员函数访问非静态成员变量
- C++中静态成员函数访问非静态成员的实例
- c++ 静态变量 静态成员变量 静态成员函数