用C進行物件導向程式設計 用C模擬繼承,多型

2021-04-26 17:34:48 字數 687 閱讀 1687

最近在開發瀏覽器,程式語言是c。由於dom明顯是有層次結構,如:

node <---------------textnode

elment

用面向過程的c來開發,有點吃力。所以決定犧牲部分效能,用c模擬物件導向的開發,使程式的結構更加清晰一點。

要考慮到問題:

1. 如何定義乙個類 (包括考慮繼承性的問題,如何定義介面,如何定義成員)

2. 物件的建立與銷毀 (建構函式,析構函式)

3. 多型 (定義虛介面)

花了一天實現了幾個相對比較簡單的介面,但是對我們的專案組而已,已經足夠。

下面的demo

1. 定義圖形類

2.定義圓類,繼承 圖形類

3.

執行完列印出

建構函式被呼叫 argn :2

引數值: 1000 21

this is circle 20 20

this is graphic 400 800

子類成員 10

父類成員 20

析構函式被呼叫 dccircle

總結:1. 實現了介面的多型

2.實現了資料,介面的繼承

3.只能定義堆上的物件,不能定義棧上物件

實現:標頭檔案 simcpp.h

原始檔 simcpp.c

輔助檔案 stringkit.h

用google mock模擬C 物件

google mock是用來配合google test對c 專案做單元測試的。它依賴於googletest 參見我上篇文章 如何用googletest寫單元測試 下面我來說說linux上怎麼用它來做單元測試。1 如何獲取 編譯google mock gmock的當前版本與gtest一樣,是1.6.0...

用google mock模擬C 物件

google mock是用來配合google test對c 專案做單元測試的。它依賴於googletest 參見我上篇文章 如何用googletest寫單元測試 下面我來說說linux上怎麼用它來做單元測試。1 如何獲取 編譯google mock gmock的當前版本與gtest一樣,是1.6.0...

OOC 用C實現物件導向

1 概述 c語言是一種面向過程的程式語言,而c 是在c語言基礎上衍生來了的物件導向的語言,實際上,很多c 實現的底層是用c語言實現的,如在visual c 中的inte ce其實就是struct,查詢inte ce的定義,你可以發現有這樣的巨集定義 ifndef inte ce define int...