怎麼使用C語言實現乙個簡單的類

2021-08-06 06:53:56 字數 768 閱讀 4769

聽到一哥們碰到乙個面試題,說使用c模擬乙個類。我們知道c中是沒有類的概念的,那我們怎麼使用c模擬類呢?其實我們的辦法並不多,巨集定義可能會是乙個不錯的選擇,下面是簡單的嘗試。

#define struct_s \

int a;\

int b;\

int c

struct s;

#define struct_h \

struct_s; \

float e; \

float f

struct h

; //成員函式

typedef struct s s;

typedef struct h h;

static void s_mem_function(s *obj_s)

static void h_mem_function(h *obj_h)

上面是簡單的模擬了繼承和成員函式的實現。其實,對於成員函式,也可以進一步模擬函式表,但是那樣可能會顯得囉嗦不自然,具體如下:

//函式表

struct functable_s

struct s

;

這樣以來呼叫的時候,會出現s->functt_s->s_function_1多重指定的問題,看著彆扭。不如直接使用上面的形式方便。

其實能使用c的地方絕大多數時候都能使用c++,與其使用c去模擬c++現實類的特性,大多數時候還不如直接使用c++呢。

如何使用C語言實現乙個簡單的字典

題目要求 實現簡單的英漢詞典,詞庫就10個單詞好了 實現功能 輸入單詞時,可以輸出相應的中文 輸入中文時,可以輸出相應的英文 如果輸入的單詞或者中文查詢不存在時,則輸出 你所查詢的內容不存在,請重新輸入 要求使用鍊錶來實現,並且直至輸入能查詢的詞時程式才退出,只要查詢不到就要一直重複輸入 提供10個...

c語言 實現乙個棧

include include include include 入棧出站操作 typedef struct nodenode,pnode typedef struct stack pstack,stack void init pstack void push pstack,int bool isem...

C語言實現乙個簡單通訊錄

通訊錄和學生資訊管理系統的基本功能部分實現一模一樣。來看看不一樣的部分。查詢 通訊錄需要實現根據聯絡人不同資訊查詢的功能,可以為每一種查詢情況都封裝乙個查詢函式,或者根據不同情況返回不同的比較結果進行查詢。為了使函式更加簡短,我們將該功能分為三個函式。根據 mode 的不同獲取不同比較方式的比較結果...