CでC++プログラムを書いて、classの実現の構造の関数と構造の関数を解析します
2181 ワード
CTest.h
CTest.c
main.c
C++の例CTest.h
CTest.cpp
main.cpp
#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;
}