C 快速入門筆記 物件導向程式設計

2021-09-07 20:32:35 字數 3094 閱讀 5305

類定義

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進行程式設計的實際意義和應用方法。我們通常在做乙個有資...