類定義
class
box;
物件定義
box box1; // 宣告 box1,型別為 box
box box2; // 宣告 box2,型別為 box
用 . 運算子訪問資料成員
在類的外部使用範圍解析運算子 :: 定義函式
double box::getvolume(void)
public
公有成員在程式中類的外部是可訪問的,可以不使用任何成員函式來設定和獲取公有變數的值。
protected
私有成員變數或函式在類的外部是不可訪問的,甚至是不可檢視的,只有類和友元函式可以訪問私有成員。
private
保護成員變數或函式與私有成員十分相似,但有一點不同,保護成員在派生類(即子類)中是可訪問的。
類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void 。建構函式可用於為某些成員變數設定初始值。
使用初始化列表來初始化字段
line::line( double len): length(len)
等價於
line::line( double len)
類的析構函式是類的一種特殊的成員函式,它會在每次刪除所建立的物件時執行。析構函式的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為字首,它不會返回任何值,也不能帶有任何引數。析構函式有助於在跳出程式(比如關閉檔案、釋放記憶體等)前釋放資源。
拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。拷貝建構函式通常用於:
如果類帶有指標變數,並有動態記憶體分配,則它必須有乙個拷貝建構函式。
line::line(const line &obj)
line::~line(void)
類的友元函式是定義在類外部,但有權訪問類的所有私有(private)成員和保護(protected)成員。儘管友元函式的原型有在類的定義**現過,但是友元函式並不是成員函式。
友元可以是乙個函式,該函式被稱為友元函式;友元也可以是乙個類,該類被稱為友元類,在這種情況下,整個類及其所有成員都是友元。如果要宣告函式為乙個類的友元,需要在類定義中該函式原型前使用關鍵字 friend 。
#include
using
namespace
std;
class
box;
// 成員函式定義
void box::setwidth( double wid )
// 請注意:printwidth() 不是任何類的成員函式
void
printwidth
( box box )
// 程式的主函式
intmain
( )
c++ 內聯函式是通常與類一起使用。如果乙個函式是內聯的,那麼在編譯時,編譯器會把該函式的**副本放置在每個呼叫該函式的地方。對內聯函式進行任何修改,都需要重新編譯函式的所有客戶端,因為編譯器需要重新更換一次所有的**,否則將會繼續使用舊的函式。
如果想把乙個函式定義為內聯函式,則需要在函式名前面放置關鍵字 inline,在呼叫函式之前需要對函式進行定義。如果已定義的函式多於一行,編譯器會忽略 inline 限定符。在類定義中的定義的函式都是內聯函式,即使沒有使用 inline 說明符。
在 c++ 中,每乙個物件都能通過 this 指標來訪問自己的位址。this 指標是所有成員函式的隱含引數。因此,在成員函式內部,它可以用來指向呼叫物件。
乙個指向 c++ 類的指標與指向結構的指標類似,訪問指向類的指標的成員,需要使用成員訪問運算子 -> ,就像訪問指向結構的指標一樣。
我們可以使用 static 關鍵字來把類成員定義為靜態的。當我們宣告類的成員為靜態時,這意味著無論建立多少個類的物件,靜態成員都只有乙個副本。
靜態成員在類的所有物件中是共享的。如果不存在其他的初始化語句,在建立第乙個物件時,所有的靜態資料都會被初始化為零。我們不能把靜態成員放置在類的定義中,但是可以在類的外部通過使用範圍解析運算子 :: 來重新宣告靜態變數從而對它進行初始化。
靜態函式成員
基類 & 派生類
其中,訪問修飾符 access-specifier 是 public、protected 或 private 其中的乙個,base-class 是之前定義過的某個類的名稱。如果未使用訪問修飾符 access-specifier,則預設為 private。
訪問控制和繼承
訪問public
protected
private
同乙個類
yesyes
yes派生類
yesyes
no外部的類
yesno
no
繼承型別
多繼承
class
《派生類名》:《繼承方式1>《基類名1>,《繼承方式2>《基類名2>,…
;
c++ 允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。
當呼叫乙個過載函式或過載運算子時,編譯器通過把您所使用的引數型別與定義中的引數型別進行比較,決定選用最合適的定義。選擇最合適的過載函式或過載運算子的過程,稱為過載決策。
函式過載
運算子過載c++ 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。
靜態鏈結 / 靜態多型 / 早繫結
虛函式純虛函式
資料抽象是指,只向外界提供關鍵資訊,並隱藏其後台的實現細節,即只表現必要的資訊而不呈現細節。
訪問標籤強制抽象
介面描述了類的行為和功能,而不需要完成類的特定實現。
如果類中至少有乙個函式被宣告為純虛函式,則這個類就是抽象類。
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行 php的高階程式設計,對於提高 php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用 php的oop進行程式設計的實際意義和應用方法。我們通常在做乙...
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行php的高階程式設計,對於提高php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用php的oop進行程式設計的實際意義和應用方法。我們通常在做乙個有資...
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行php的高階程式設計,對於提高php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用php的oop進行程式設計的實際意義和應用方法。我們通常在做乙個有資...