C語言與物件導向

2021-08-23 15:45:51 字數 731 閱讀 9234

問題一:c++的private關鍵字主要作用是封裝,那麼c語言如何完成同樣的需求?

答:封裝就是不給人看到,依著這個思路,我們來看看優秀的**是怎麼實現的.

apache裡的記憶體池這一概念,它的宣告在apr_pool.h裡,

/** the fundamental pool type */

typedef struct apr_pool_t apr_pool_t;

而它的定義卻在apr_pool.c裡,

struct apr_pool_t ;

這樣做的好處是外界(也即指apr_pool.c以外的檔案)無法直接訪問記憶體池的成員.記憶體池只提供類似這樣的介面:

apr_pool_create(&ptemp, pconf);

apr_pool_tag(ptemp, "ptemp");

apr_pool_clear(plog);

apr_pool_destroy(ptemp);

apr_pool_lock(pconf, 1);

這樣的是不是很像c++裡的public和private的運用.

同樣道理,在apr_pool_t裡有乙個成員cleanups,我們可以看到它的定義和宣告都在apr_pool.c裡,

typedef struct cleanup_t cleanup_t;

struct cleanup_t ;

這樣做,一般的apache開發者根本都不知道有struct cleanup_t這種東西.

面向過程與物件導向 c語言與c

沒有深思熟慮的設計過程 使用時存在很多 灰色地帶 殘留了過多低階語言的特徵 直接利用指標進行記憶體操作 最終執行效率的高效 特點 分析解決問題所需要的步驟 利用函式實現各個步驟 一次呼叫函式解決問題 問題 軟體可重用性差 軟體可維護性差 構建的軟體無法滿足使用者需求 特點 直接分析使用者需求中涉及的...

C與C ,面向過程與物件導向

注 個人理解 對比區別 c語言程式制定具體流程,按流程逐步進行。c 程式將過程結構化,需要使用時利用介面訪問與呼叫不同功能的類結構結構。pragma once namespace myelevator int direction 方向 int now floor 當前樓層 int targer fl...

C與物件導向

1.實現 stack.h ifndef stack h define stack h include ifdef cplusplus extern c stack bool push stack p,int val bool pop stack p,int pret define newstack ...