C 為什麼要引入成員函式?

2021-09-06 01:43:52 字數 1150 閱讀 1147

問題引入:程式設計提示使用者輸入圓的半徑,計算輸出圓的面積

#include

#include

intmain

(void

)

物件導向首先需要對問題進行抽象,定義乙個描述圓的資料型別,再建立具體的圓物件。在c語言中,可以定義乙個結構體struct,用來包含圓的半徑等資訊,而c++中稱為類class。類和結構體的區別在於類增加了函式處理。類中的變數稱為屬性,函式稱為方法。

c語言結構體

#include

#include

struct circle

;int

main

(void

)

c++類

#include

#include

class circle

;//建構函式

circle:

:circle()

//析構函式

circle::~

circle()

//設定半徑

void circle:

:setradius()

//計算面積

void circle:

:getarea()

intmain()

先看乙個典型的錯誤

#include

#include

class circle

;int

main()

雖然程式在vs2013上能編譯通過,但執行後area的值卻是亂碼,如下圖

原因:在定義c1物件時,circle類中area = pi * r * r就已經初始化完成,也就是area中儲存的是乙個亂碼,對r重新賦值不會改變area的值。因此,需要引入成員函式void getarea();,用於計算圓的面積。

成員函式的意義在於提供類與外界的介面,實現了資料的封裝,使用者不能直接訪問私有的資料,所有的操作只能通過類的成員函式。

為什麼要引入保護成員

在c 成員中我們需要一種成員比私有成員訪問範圍大比公有成員訪問範圍小的成員。因此就引入了保護成員。保護成員擴大範圍表現在基類的保護成員在派生類的成員函式中被訪問。基類的成員本身就是派生類的成員,但是出於隱藏目的不宜設為公有,但是又確實需要在派生類的成員函式中經常訪問基類成員,將其設定成保護成員,既能...

為什麼c 要引入友元函式?

例如 程式 表示為 a b 2.75可以等於a b.operator 2.75 但是 a 2.75 b 就不能寫成這樣 因為 operator 是成員函式 只有類的物件才能引用 a b 2.75這樣的寫法只有非成員函式才能這麼寫因為 a operaotor 2.75 b 但是由於大部分非成員函式 都...

為什麼要引入補碼

現在我們知道了計算機可以有三種編碼方式表示乙個數.對於正數因為三種編碼方式的結果都相同,所以不需要過多解釋 原碼 1 0000 0001 反碼 1 0000 0001 補碼 1 0000 0001 為了解決原碼做減法的問題,出現了反碼 1 1 1 1 0000 0001 原 1000 0001 原 ...