C++ 對象和函數

2023-03-20 16:02 更新

通常認為C++是一種面向對象編程語言,這意味著它提供了支持面向對象編程的特性。

定義面向對象語言并非易事,但是我們已經看到了它具備的一些特性:

1.程序由一些結構定義和函數定義組成,大多數函數操作特定類型的結構(或者對象)。

2.每個結構定義對應著一些現實世界中的物體或概念,對結構進行操作的函數對應著現實世界中物體交互的方式。

例如,我們在第九章中定義的Time結構體明顯對應著人們記錄每天時間的方式,而我們定義的操作對應著人們記錄時間所做的事情。類似地,Point和Rectangle結構體對應于數學概念上的點和矩形。

然而,迄今為止,我們還沒有利用C++提供的支持面向對象編程的特性。嚴格來說,這些特性并非必要。在很大程度上,它們?yōu)槲覀兯龅氖虑樘峁┝肆硪环N語法,但在許多情況下,這種語法能更加簡明和精確地傳達程序的結構。

如Time程序中,結構體定義和函數定義沒有明顯的聯系。通過一些研究發(fā)現,每個函數顯然應當至少將一個Time結構體作為參數。

這種觀察結果是成員函數的動機。成員函數區(qū)別于另外我們寫過的另兩種函數:

1.調用函數時,我們不是直接調用,而是通過對象調用它。人們通常將這種過程描述成“對一個對象執(zhí)行操作”或者“給一個對象發(fā)送消息”。

2.函數在結構體定義中聲明,以使結構和函數之間的關系更加明顯。

在后面幾節(jié)中,我們會從第九章中拿出一些函數,并把它們轉化成成員函數。你應該意識到這種轉換是純機械的。話句話說,你只需遵循一系列步驟就能完成。

如我所說,任何成員函數能做的事情,也能用非成員函數(有時稱為獨立函數)完成。但有時其中一種會優(yōu)于另一種。如果你能很自然地從一種形式轉換到另一種,那么你就能為你做的事情選擇最好的形式。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號