程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中類定義的細節

C++中類定義的細節

編輯:C++入門知識

C++中類定義的細節


成員變量

每個類可以沒有成員,也可以定義多個成員,成員可以是數據、函數或類型別名。

一個類可以包含若干公有的、私有的和受保護的部分。在 public 部分定義的成員可被使用該類型的所有代碼訪問;在 private 部分定義的成員可被其他類成員訪問。protected可以被子類訪問。

 

構造函數

與類同名,且沒有返回值的函數,用於構造一個對象。

一般使用一個初始化列表來初始化數據成員,如下:

Sales_item() : units_sold(0),revenue(0.0){}

 

成員函數

在類內部,聲明成員函數是必需的,而定義成員函數則是可選的。

在類內部定義的函數默認為 inline。

在類外部定義的成員函數必須指明它們是在類的作用域中。Sales_item::avg_price 的定義使用作用域操作符來指明這是Sales_item 類中 avg_price 函數的定義。

將const加加到形參表之後,就可以變為常成員函數,在該函數內不能修改成員變量的值,如: double avg_price() const;

const必須出現在聲明和定義中,若出現一處,就會出現一個編譯時錯誤。

ps:const成員函數可以區分重載函數

 

Ø 顯示指定inline成員函數

可以在類定義體內部指定一個成員為 inline,作為其聲明的一部分。或者,也可以在類定義外部的函數定義上指定 inline。在聲明和定義處指定 inline都是合法的。在類的外部定義 inline 的一個好處是可以使得類比較容易閱讀。像其他 inline 一樣,inline 成員函數的定義必須在調用該函數的每個源文件中是可見的。不在類定義體內定義的inline成員函數,其定義通常應放在有類定義的同一頭文件中。

 

Ø 定義一個類

class Test{

}; //注意分號不能少

聲明一個類

class Test; //叫前向聲明

 

Ø 因為只有當類定義體完成後才能定義類,因此類不能具有自身類型的數據成員。然而,只要類名一出現就可以認為該類已聲明。因此,類的數據成員可以是指向自身類型的指針或引用,如下:

 

class LinkScreen {

Screen window;

LinkScreen *next;

LinkScreen *prev;

};

 

Ø 類的定義分號結束。分號是必需的,因為在類定義之後可以接一個對象定義列表。定義必須以分號結束:

class Sales_item{ /* ... */ };

class Sales_item{ /* ... */ } accum, trans;

 

Ø 隱含的this指針

成員函數具有一個附加的隱含形參,即指向該類對象的一個指針。這個隱含形參命名為 this,與調用成員函數的對象綁定在一起。成員函數不能定義this 形參,而是由編譯器隱含地定義。成員函數的函數體可以顯式使用 this 指針,但不是必須這麼做(比如return *this;)。如果對類成員的引用沒有限定,編譯器會將這種引用處理成通過 this 指針的引用。

 

Ø const 成員函數返回*this

在普通的非 const 成員函數中,this 的類型是一個指向類類型的 const指針。可以改變 this 所指向的值,但不能改變 this 所保存的地址。在 const 成員函數中,this 的類型是一個指向 const 類類型對象的const 指針。 既不能改變 this 所指向的對象, 也不能改變 this 所保存的地址。

****不能從 const 成員函數返回指向類對象的普通引用。const 成員函數只能返回 *this作為一個 const 引用。****

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved