CでC++プログラムを書いて、classの実現の構造の関数と構造の関数を解析します

2181 ワード

CTest.h
#ifndef __CTEST_H__
#define __CTEST_H__

typedef void (*ConstructFunc)(void*);
typedef void (*DestructFunc)(void*);

typedef struct
{
 ConstructFunc CTestC;
 DestructFunc CTestD;
}CTest;

CTest* GetCTest();

#endif /* __CTEST_H__ */

CTest.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CTest.h"

static void CTestConstructFunc(void* _this)
{
	printf("CTest: this: %p
", _this); } static void CTestDestructFunc(void* _this) { printf("~CTest: this: %p
", _this); } CTest* GetCTest() { CTest* pTest = (CTest*)malloc(sizeof(CTest)); pTest->CTestC = CTestConstructFunc; pTest->CTestD = CTestDestructFunc; return pTest; }

main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CTest.h"

int main()
{
	CTest* pTest = GetCTest();
	pTest->CTestC(pTest);
	pTest->CTestD(pTest);
	free(pTest);
	getchar();
	return 0;
}

 
 
C++の例CTest.h
#ifndef __CTEST_H__
#define __CTEST_H__

class CTest
{
public:
	CTest();
	~CTest();
};

#endif

CTest.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CTest.h"

CTest::CTest()
{
	printf("CTest this:%p
", this); } CTest::~CTest() { printf("~CTest this:%p
", this); }

main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CTest.h"

int main()
{
	CTest* pTest = new CTest();
	delete pTest;
	getchar();
	return 0;
}