最近一直在想這個問題,我們能用c語言實現c++的核心的幾個功能嗎?
包括類和介面。
初步的想法是用c語言編譯器結合自己寫的cxx2c翻譯程式實現編譯cxx程式的目的.
將原來用cxx寫的代碼經過cxx2c的翻譯程式,將cxx代碼中的所有cxx專屬的文法翻譯成c所能識別的文法規則產生 .c檔案,最後用c語言編譯器去編譯這個檔案產生可執行碼。
先簡單的介紹一下類技術的實現。
(一)類的實現
類的構造和c語言上的結構體是很相似的,甚至有的cxx編譯器是將struct和class同等看待的。我們就從struct出發實作類別的準系統。
看如下代碼(是用c語言寫的,模仿cxx類的一個簡單例子):
#include<stdio.h>
struct FClass
{
int age;
char name[20];
void (*printAge)( struct FClass* mythis);//
void (*getName)(struct FClass* mythis);
void (*printName)(struct FClass* mythis);
};
void PrintAge( struct FClass* mythis)
{
printf("%d\n",mythis->age);
}
void GetName(struct FClass* mythis)
{
printf("輸入這個人的名字:");
scanf("%s",mythis->name);
}
void PrintName(struct FClass* mythis)
{
printf("%s",mythis->name);
}
int main()
{
struct FClass people={20,"wudeng",PrintAge,GetName,PrintName};
struct FClass people2={21,"zhangsan",PrintAge,GetName,PrintName};
// people.age=20;
// people.p=PrintAge;
people.printAge(&people);
people.getName(&people);
people.printName(&people);
people2.printAge(&people2);
return 1;
}
可以直接啟動並執行。
...................(未完待續)