問題一: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 ...