c語言實現c++功能

來源:互聯網
上載者:User

最近一直在想這個問題,我們能用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;
}

可以直接啟動並執行。

...................(未完待續)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.