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 實現多型必...