自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++中的面向?qū)ο缶幊毯?jiǎn)介

開(kāi)發(fā) 后端
C++是一種面向?qū)ο蟮恼Z(yǔ)言。面相對(duì)象分為三種特性:分別是封裝性、繼承性和多態(tài)性,這些特性在不同情況下有著不同的表現(xiàn)。

最近一段時(shí)間參加了一家培訓(xùn)機(jī)構(gòu)組織的培訓(xùn),主要的內(nèi)容大多都是面向?qū)ο?/FONT>編程的技術(shù)課程,在這里按照面向?qū)ο?/FONT>里面的幾個(gè)基本概念分別進(jìn)行說(shuō)明如下,希望大家學(xué)習(xí)參考。

一.對(duì)象(Object),這個(gè)概念可以說(shuō)是面向?qū)ο?/FONT>里面的最為核心的概念,如果找不著對(duì)象,又如何面向?qū)ο?/FONT>呢?對(duì)象,也就是你要處理的問(wèn)題里面設(shè)計(jì)的若干個(gè)因素,比如你做學(xué)生成績(jī)統(tǒng)計(jì),那么學(xué)生當(dāng)然是你要考慮的對(duì)象。

二.類(Class),從本質(zhì)上講是先有對(duì)象才有類,因?yàn)樵谔幚淼膶?shí)際編程問(wèn)題時(shí),你面對(duì)的是一個(gè)個(gè)具體的對(duì)象,太多了,怎么辦?分門(mén)別類,實(shí)現(xiàn)物以類聚,對(duì)了,將相同屬性的對(duì)象作為一類進(jìn)行考慮,張三也好,李四也好,他們都是人的一個(gè)實(shí)例。在具體的語(yǔ)言實(shí)現(xiàn)時(shí),兩者的順序就需要顛倒一下了,也就是要先有類,然后才能實(shí)例化生成對(duì)象。

 三.面向?qū)ο?/FONT>的三大特性:

1.封裝

所謂的封裝也就是在類的設(shè)計(jì)時(shí),實(shí)現(xiàn)對(duì)于類內(nèi)的數(shù)據(jù)與方法的不同權(quán)限設(shè)置,有些數(shù)據(jù)和方法,我們不希望用戶在類的外部通過(guò)實(shí)例化去調(diào)用,那么我們將它們聲明成私有的(private),這樣這些數(shù)據(jù)和方法只能被類內(nèi)部的成員函數(shù)訪問(wèn),而如果希望能夠被實(shí)例訪問(wèn),那么聲明成公有的(public),至于第三種訪問(wèn)區(qū)分符(protected)保護(hù)型的,在類的繼承時(shí)應(yīng)用,我們到繼承那里說(shuō)明。

 與封裝有關(guān)的一個(gè)概念是“抽象”(abstract) ,即將設(shè)計(jì)的類的最主要的功能表示出來(lái),這些功能正是要被其他類和函數(shù)訪問(wèn)的。

2.繼承

 與繼承有關(guān)的概念是關(guān)系,關(guān)系描述了類之間的聯(lián)系,有四種基本類型,即“繼承、組合、利用、實(shí)例化”。繼承就是說(shuō)某一個(gè)類具有了另外一個(gè)類所有的數(shù)據(jù)和方法,當(dāng)然可以修改一部分并且增加新的數(shù)據(jù)和方法。繼承分為兩種類型,即單重繼承和多重繼承。

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

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

可見(jiàn)在定義繼承類時(shí),要指明繼承了哪一個(gè)類,并且指明繼承級(jí)別(public,protected,private),通過(guò)這三種訪問(wèn)區(qū)分符的修飾,可以改變基類數(shù)據(jù)在派生類中的訪問(wèn)權(quán)限,public 繼承不會(huì)改變,protected繼承的話原來(lái)的public 數(shù)據(jù)和方法變成派生類的protected型數(shù)據(jù)和方法,其他不變,private繼承則將所有的數(shù)據(jù)和方法的訪問(wèn)權(quán)限設(shè)置為private,即這些數(shù)據(jù)和方法都不能在類的外部訪問(wèn)。

派生類的構(gòu)造和析構(gòu)順序,首先構(gòu)造基類,然后構(gòu)造派生類,中間是類的作用,析構(gòu)順序正好相反。

多重繼承是說(shuō)一個(gè)類繼承了兩個(gè)或者多個(gè)類的數(shù)據(jù)或者方法。在多重繼承這里預(yù)見(jiàn)的主要的問(wèn)題是兩個(gè)歧義性:首先,當(dāng)繼承的兩個(gè)基類中含有相同的數(shù)據(jù)或者方法時(shí),在派生類中調(diào)用無(wú)法區(qū)分。

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

3.多態(tài)

多態(tài)性分為兩種,即靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性。所謂多態(tài),也就是明明同樣一個(gè)東西,在不同情況下有著不同的表現(xiàn)。

 靜態(tài)多態(tài)性,即預(yù)先定義好的,通過(guò)函數(shù)重載(funcition overload)實(shí)現(xiàn),函數(shù)包含了返回值、函數(shù)名稱、函數(shù)參數(shù)三個(gè),名字多表示功能,返回值的區(qū)分不能區(qū)分函數(shù)(想象數(shù)據(jù)類的強(qiáng)制轉(zhuǎn)換吧)。因此重載也就是函數(shù)名稱相同而參數(shù)不同,不同可以表現(xiàn)在參數(shù)個(gè)數(shù)不同、參數(shù)類型不同、參數(shù)順序不同

【編輯推薦】

  1. 簡(jiǎn)介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫(kù)函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語(yǔ)言真的還有市場(chǎng)價(jià)值?
  5. C++類庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來(lái)源: NET130
相關(guān)推薦

2024-01-03 13:38:00

C++面向?qū)ο缶幊?/a>OOP

2011-07-14 17:37:02

C++面向?qū)ο缶幊趟枷?/a>

2011-07-14 17:24:10

C++面向?qū)ο笏枷?/a>

2025-04-02 03:11:00

Python函數(shù)C++

2010-01-13 14:05:55

C++語(yǔ)言

2009-07-08 16:10:24

Scala簡(jiǎn)介面向?qū)ο?/a>函數(shù)式

2009-12-22 01:54:50

C++之父Bjarne Stro

2011-06-17 17:27:29

Objective-CCocoa蘋(píng)果

2010-01-22 10:26:40

C++語(yǔ)言

2011-07-10 15:36:54

C++

2009-01-16 08:52:26

面向?qū)ο?/a>OOP編程

2023-04-19 08:43:52

Python面向?qū)ο缶幊?/a>

2017-04-21 09:07:39

JavaScript對(duì)象編程

2012-01-17 09:34:52

JavaScript

2010-07-20 09:13:55

Perl面向?qū)ο缶幊?/a>

2011-07-21 17:19:47

java面向?qū)ο?/a>

2010-07-20 13:44:02

Perl方法

2010-11-17 11:31:22

Scala基礎(chǔ)面向?qū)ο?/a>Scala

2022-07-30 23:41:53

面向過(guò)程面向?qū)ο?/a>面向協(xié)議編程

2009-06-26 13:56:20

UML面向?qū)ο蠼?/a>
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)