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

C++中的面向對象編程簡介

編輯:C++入門知識

最近一段時間參加了一家培訓機構組織的培訓,主要的內容大多都是面向對象編程的技術課程,在這裡按照面向對象裡面的幾個基本概念分別進行說明如下,希望大家學習參考。

一.對象Object),這個概念可以說是面向對象裡面的最為核心的概念,如果找不著對象,又如何面向對象呢?對象,也就是你要處理的問題裡面設計的若干個因素,比如你做學生成績統計,那麼學生當然是你要考慮的對象。

二.類Class),從本質上講是先有對象才有類,因為在處理的實際編程問題時,你面對的是一個個具體的對象,太多了,怎麼辦?分門別類,實現物以類聚,對了,將相同屬性的對象作為一類進行考慮,張三也好,李四也好,他們都是人的一個實例。在具體的語言實現時,兩者的順序就需要顛倒一下了,也就是要先有類,然後才能實例化生成對象。

三.面向對象的三大特性:

1.封裝

所謂的封裝也就是在類的設計時,實現對於類內的數據與方法的不同權限設置,有些數據和方法,我們不希望用戶在類的外部通過實例化去調用,那麼我們將它們聲明成私有的private),這樣這些數據和方法只能被類內部的成員函數訪問,而如果希望能夠被實例訪問,那麼聲明成公有的public),至於第三種訪問區分符protected)保護型的,在類的繼承時應用,我們到繼承那裡說明。

與封裝有關的一個概念是“抽象”abstract) ,即將設計的類的最主要的功能表示出來,這些功能正是要被其他類和函數訪問的。

2.繼承

與繼承有關的概念是關系,關系描述了類之間的聯系,有四種基本類型,即“繼承、組合、利用、實例化”。繼承就是說某一個類具有了另外一個類所有的數據和方法,當然可以修改一部分並且增加新的數據和方法。繼承分為兩種類型,即單重繼承和多重繼承。

單重繼承,即類Derived繼承了類Base,定義如下:

  1. class Base  
  2.  
  3.       {  
  4.  
  5.       };  
  6.  
  7.      class Derived:public Base  
  8.  
  9.        {  
  10.  
  11.       } 

可見在定義繼承類時,要指明繼承了哪一個類,並且指明繼承級別public,protected,private),通過這三種訪問區分符的修飾,可以改變基類數據在派生類中的訪問權限,public 繼承不會改變,protected繼承的話原來的public 數據和方法變成派生類的protected型數據和方法,其他不變,private繼承則將所有的數據和方法的訪問權限設置為private,即這些數據和方法都不能在類的外部訪問。

派生類的構造和析構順序,首先構造基類,然後構造派生類,中間是類的作用,析構順序正好相反。

多重繼承是說一個類繼承了兩個或者多個類的數據或者方法。在多重繼承這裡預見的主要的問題是兩個歧義性:首先,當繼承的兩個基類中含有相同的數據或者方法時,在派生類中調用無法區分。

解決方法:指明調用的哪一個類的成員變量和方法,使用作用域分解運算符;在派生類裡面重新定義該數據或者方法。第二類歧義性發生在多層繼承時,B,C繼承了A,而D又繼承了B,C,正如矩形和菱形繼承四邊形而正方形繼承了矩形和菱形,兩條繼承路徑使得基類被兩次繼承,直接訪問無法區分,解決方法:支出繼承路徑,使用虛基類virtual)方法,在定義繼承關系時添加virtual使得基類永遠只有一份拷貝。

3.多態

多態性分為兩種,即靜態多態性和動態多態性。所謂多態,也就是明明同樣一個東西,在不同情況下有著不同的表現。

靜態多態性,即預先定義好的,通過函數重載funcition overload)實現,函數包含了返回值、函數名稱、函數參數三個,名字多表示功能,返回值的區分不能區分函數想象數據類的強制轉換吧)。因此重載也就是函數名稱相同而參數不同,不同可以表現在參數個數不同、參數類型不同、參數順序不同

  1. 簡介學習C++總結之談
  2. 對C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法

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