#封裝
在c語言中,可以用結構+函式指標來模擬類的實現,而用這種結構定義的變數就是物件。
封裝的主要含義是隱藏內部的行為和資訊,使用者只用看到對外提供的介面和公開的資訊。有兩種方法實現封裝
物件導向的最基本的出發點是「將資料以及處理資料的方法封裝在一起」,至於繼承、派生、多型之類的則是後面擴充套件的東西。在c語言中,如果用結構體來儲存資料,並將處理這些資料的函式與結構體的定義封裝在同乙個.c檔案中,則該.c檔案就可以視作乙個類。如果將指向具體函式的函式指標與結構體的其他成員封裝在同乙個結構體中,則該「物件」的使用甚至與c++相差無幾了。
###例子1:
標頭檔案
#ifndef _test_h
#define _test_h
#include #include #include //相當於public的成員
typedef struct employee
employee;
extern employee employeenew(char *name,int salay);//建構函式
extern int employeefree(employee x);//析構函式
#endif
c檔案
#include "test.h"
//這個結構體是私有的,相當於private成員,不允許建立物件
typedef struct employee_p
employee_p;
void test_print(const struct employee *this)
/*建構函式*/
employee employeenew(char *name,int salay)
/*析構函式*/
int employeefree(employee x)
主函式呼叫
int main()
###例子2
這裡寫**片
#繼承 C語言實現C 中物件導向特性
c語言是面向過程的語言,因此用c語言進行物件導向程式設計,則需要做一些預處理。一 使用結構體定義實現物件 物件導向的開發的核心思想就是物件,可以把任何事物抽象成物件,而把程式之間的互動以及呼叫,物件之間傳遞訊息 實際上就是物件成員函式的呼叫 的形式來實現。物件導向的語言專門引入了物件型別定義機制,用...
C語言實現memcpy
memcpy和memmove都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,他們的作用是一樣的,唯一的區別是,當記憶體發生區域性重疊 的時候,memmove保證拷貝的結果是正確的,memcpy不保證拷貝的結果的正確。程式設計師面試寶典中有例題 對應的原型如下 v...
C語言實現多型
c 中的多型是指 通過基類物件的指標或者基類物件的引用呼叫虛函式 表現更多派生類的特性,但根據c 多型的實現,我們發現這種方法存在一定的空間和效率的折損。不可否認,多型輕鬆解決了很多任務程中遇到的問題,這與 pure c 的解決方法比起來,更為優雅。在考慮移植性上,c 的光芒要蓋過 c 但 c 的多...