C 的物件導向程式設計一

2021-07-04 09:34:19 字數 2205 閱讀 1747

c++的物件導向程式設計一

類的學習筆記

c++不同於c的乙個重要特性便是它具有物件導向的程式設計思想。那麼談到了物件導向,那從基礎上就得先談資料的封裝了,也就是我們常說的類了。細節的學習應該可以從書上來學。參考書籍:《c++primer(第4版)》

這個學習筆記我想記錄一些關於在設計乙個類時所需要知道的事情。【淺見!】

定義乙個類:

class items

int func1();

private :

int val;

新增了乙個建構函式。不新增的話,編譯器會幫我們合成乙個預設的建構函式。不過,良好的習慣是自己去寫乙個建構函式。這裡涉及到了乙個細節。建構函式裡的初始化列表。只看建構函式,我們對比兩個寫法,乙個如上,乙個如下:

items (inti)

int func1();

int getval() const;

int setval(int i);

private :

int val;

然後實現成員函式:

intitems::getval() const {

return val;

intitems::setval(int i){

val = i;

由於val是private的,那麼要獲取val的值和修改val。就得通過對應的get和set的函式。另外我們還在getval()函式那裡新增了乙個const修飾符。這個修飾符的意思是,在getval()中,不可以修改this指標所指的物件。慎用該修飾符,比如在建構函式中使用const,那就是錯誤的。

不過,一直使用get和set顯得有些麻煩,有一些類或函式如果頻繁使用val,且能保證安全的話,那麼可以允許他們去訪問這些private函式。因此引入了友元的概念。friend修飾符。可以讓乙個類成為友元,也可以讓乙個類中的函式成為友元。這裡有乙個相互依賴的關係。即定義的先後次序。我們看如下,是乙個正確的定義次序

class b{

public :

…… // 省略必要

int func1(a& a);

class a{

public :

……// 省略必要

friendint b::func1(a& a); //宣告類b中的func1()函式為友元

private :

int val;

intb::func1(a& a){

return a.val;

如上,首先我們必須現有類b,然後類b中有乙個函式需要使用類a的private變數。因此,然後我們在類a中將b中的方法func1()宣告為友元。然後func1的定義才可以出現。這也是乙個建議成員函式在類的定義體外定義的原因之一。

然後,我們回到items類,繼續完善,我們可以加入static成員,這個讓items物件都共享的成員。區別於const,我將static理解為只有乙份。使用「items::」去呼叫他。然後有乙個特殊整型的成員變數,可以在宣告的時候初始化。

conststatic變數。

完成成員的定義,那麼乙個完整的類,你還需呀定義:

建構函式【形成對比】

items ();

複製建構函式

items (constitems&);

賦值操作符

items &operate== (const items&);

析構函式

~items ();

完成這些基本就完成了類的定義,但為了可以給「使用者」【後續解釋】更好的體驗,我們還需要過載操作符與轉換。可過載的操作符包括:

->      ->*   new        new  delete        delete

不能過載的操作符

對於一開始的學習,想到要過載這些操作符簡直是惡夢,但是如果沒有過載這些有時候又會是損失掉很多便利。這裡就要提到前面說的使用者。這裡的使用者是乙個泛指的概念。對於乙份**而言,使用者是程式設計師。對於乙個程式,使用者是操作人員。而對於乙個類來說,使用者就是**了。在後面還會學到c++又乙個重要的標誌性東西,模版程式設計以及演算法。而裡面的很多演算法就依賴於這些操作符的計算。

比如演算法find函式,就需要要求類物件實現 == 操作符。初學複雜的東西往往是在你精通的路上不可或缺的部分,克服它,將收穫更多。

如果需要寫關於資料型別的類,那麼實現隱式轉換則更好,也更為難了。

那麼到這裡,就差不多完成了乙個類,這對初學者來說,真真是臣妾做不到呀。

以上是我這幾天的學習總結,如有錯漏,歡迎糾正,萬分感謝。

c 物件導向程式設計(一)

一 繼承 c 中,派生類只能從乙個類中繼承。c 中的繼承符合下列規則 1 繼承是可傳遞的。2 派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去己經繼承的成員的定義 3 建構函式和析構函式不能被繼承。除此以外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只...

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

c 物件導向的程式設計

物件導向程式設計基於三個基本概念 資料抽象 繼承和動態繫結 在c 中,用類進行資料抽象 用類派生從乙個類繼承另乙個類 派生類繼承基類的成員 多型 動態繫結使編譯器能夠在 執行時 決定是使用基類中定義的函式還是派生類中定義的函式 物件導向程式設計的關鍵思想是多型性 polymorphism 實現多型必...