首页
社区
课程
招聘
[原创]用C语言模拟c++的对象生命周期过程
发表于: 2011-6-11 01:38 6565

[原创]用C语言模拟c++的对象生命周期过程

2011-6-11 01:38
6565

个人感觉c和c++最大的不同就是c++的编译器更勤快,为我们作了更多的工作。比如计算偏移以及在对象生命周期结束时添加相应析构函数的调用。

如下面简单的c++代码

#include <stdio.h>

class CBase
{
public:
	CBase():
	  m_nTest(0)
	{
		printf( "CBase constructor.\n" );
	}

	virtual ~CBase()
	{
		printf( "CBase destructor.\n" );
	}

	void Test()
	{
		printf( "CBase::Test m_nTest=%d\n", m_nTest );
	}

	virtual void VirtualTest()
	{
		printf( "CBase::VirtualTest\n" );
	}

protected:

	int m_nTest;

};

class CDerived : public CBase
{
public:
	CDerived():
	  m_nTest(1)
	{
		printf( "CDirived constructor\n" );
	}

	virtual ~CDerived()
	{
		printf( "CDerived destructor\n" );
	}
	
	void Test()
	{
		printf( "CDerived::Test m_nTest=%d ; CBase::m_nTest=%d\n", m_nTest, CBase::m_nTest );
	}
	virtual void VirtualTest()
	{
		printf( "CDerived::VirtualTest\n" );
	}

private:
	int m_nTest;
};


int main()
{
	
	CDerived derive;

	CBase *pbase = &derive;

	pbase->VirtualTest();
	pbase->Test();
	derive.Test();

	return 0;
        
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 387
活跃值: (76)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
最近看com,反汇编了一些东西,再对着源码看,对c++的实现也有了一些了解。
2011-6-11 03:22
0
雪    币: 58
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个不奇怪吧,看bios里面的代码尽是这样的!!
2011-6-11 10:15
0
雪    币: 163
活跃值: (75)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
如果能完全实现C与C++的互转,那将是程序分析的一大进步~
2011-6-11 12:08
0
游客
登录 | 注册 方可回帖
返回
//