1. 類就可以看作乙個struct,類的方法,可以理解為通過函式指標的方式實現的,類物件分配記憶體時,只分配成員變數的,函式指標並不需要分配額外的記憶體儲存位址。
2. c++中類的建構函式,就是進行記憶體分配(malloc),呼叫建構函式
3. c++中類的析構函式,就時**記憶體(free)
4. c++是基於棧和全域性資料分配記憶體的,如果是乙個方法內建立的物件,就直接在棧上分配記憶體了。
專門在轉殖時使用的建構函式,是構造拷貝函式,原型時「類名(const 類名&)",避免拷貝整個物件,在傳遞物件時,改為傳遞指標,同時將構造拷貝函式設定為私有這樣做到強制限制。
5. 成員變數為私有,僅僅時編譯時起到保護左右,實際記憶體模型沒有變。
6. 繼承是在原有的父類的記憶體模型上,再新增自己的資料
#include #include class testclass
~testclass()
testclass(testclass &src)
};void test(testclass al)
void test(testclass *al)
int main(void)
如果是自己模擬實現override,實際就是要呼叫的實現使用函式指標,子類確定這些函式。
/*
* test.cpp
* * created on: 2023年5月24日
* author: jme
*/#include #include // 1. 定義乙個函式指標
typedef void (*testfunc)();
class base
// 函式指標
testfunc func;
};void funcimpl_1()
void funcimpl_2()
class sub1: public base
};class sub2: public base
};int main(void)
c++的virtual語法:
/*
* test.cpp
* * created on: 2023年5月24日
* author: jme
*/#include #include class base ;
class sub1: public base
virtual void testfunc();
void testfunc2();
};class sub2: public base
virtual void testfunc();
void testfunc2();
};class sub3: public base
void testfunc();
void testfunc2();
};void base::testfunc()
void base::testfunc2()
void sub1::testfunc()
void sub1::testfunc2()
void sub2::testfunc()
void sub2::testfunc2()
void sub3::testfunc()
void sub3::testfunc2()
void callwithpointer(base *basec)
void callwithoutpointer(base basec)
void call2(base *basec)
int main(void)
從c物件導向的實現理解c 的物件(一)
1.使用struct來儲存資料 2.使用struct裡面的函式指標指向相應的函式 include include 不完整的宣告,方便後面函式指標型別變數的定義 struct person typedef struct person pperson typedef void setage pperso...
C 物件導向理解
物件導向是面向過程演化而來 面向過程 面向的是完成一件事的過程,強調完成這件事的動作 例項 把衣櫃搬到臥室裡 1.開啟臥室門 2.把衣櫃搬到臥室裡 3.關閉臥室門 面向過程的思維 小明 瘦小 個子矮 小明踩著凳子開啟臥室門 小明找老王幫忙把衣櫃搬到臥室裡 小明踩著凳子關閉臥室門 老王 強壯 老王自己...
c實現物件導向
c語言的結構體裡面沒有函式,但是c 裡面有函式,所以今天實現乙個c語言物件導向的程式 1 封裝 include include include typedef struct cmd newcmd void run newcmd pcmd void print newcmd pcmd int main...