C++期末復(fù)習(xí)-創(chuàng)新互聯(lián)

文章目錄
  • 題型
    • 1、三個閱讀程序
    • 2、三個問答
      • c++語言的特點(diǎn)
      • c++訪問控制符特點(diǎn)
        • public
        • protected
        • private
      • 內(nèi)存區(qū)
      • 動態(tài)內(nèi)存:
    • 3、兩題程序填空
    • 4、一道程序大題
  • 考點(diǎn)
    • 1.c++相對于c的改進(jìn)
      • 聯(lián)系
      • 區(qū)別
    • 2.面向?qū)ο蟪绦蛟O(shè)計(jì)主要特征
      • 抽象
      • 封裝
      • 繼承
      • 多態(tài)
    • 3.值傳遞
      • 值傳遞
      • 指針傳遞
    • 4.類的析構(gòu)函數(shù)、成員函數(shù)、構(gòu)造函數(shù)區(qū)別
      • 成員函數(shù)
      • 構(gòu)造函數(shù)
      • 析構(gòu)函數(shù)
    • 5.類的定義
    • 6.繼承的概念和性質(zhì)
      • 父類類型的子類對象
    • 7.抽象類的概念
    • 8.派生類的概念
    • 9.虛函數(shù)和多態(tài)
      • 虛函數(shù)
      • 純虛函數(shù)
      • 靜態(tài)多態(tài)
      • 動態(tài)多態(tài)
    • 10.虛繼承和多重繼承
      • 多重繼承
      • 虛繼承
      • 虛繼承的構(gòu)造函數(shù)
    • 11.數(shù)組定義以及在內(nèi)存中的分配
      • 靜態(tài)數(shù)組
      • 動態(tài)數(shù)組
    • 12.類的靜態(tài)成員
    • 13.動態(tài)鏈接庫
    • 14.封裝體
    • 15.指針以及使用
    • 其他
      • 1、頭文件
      • 2、鏈接屬性
      • 3、實(shí)參和形參
      • 4、轉(zhuǎn)換構(gòu)造函數(shù)
      • 5、雙冒號"::"的作用
        • 1、作用域符
        • 2、域操作符
        • 3、作用域分解運(yùn)算符

10余年的湘東網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整湘東建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“湘東網(wǎng)站設(shè)計(jì)”,“湘東網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。題型 1、三個閱讀程序 2、三個問答 c++語言的特點(diǎn)

四個主要特點(diǎn):抽象、封裝、繼承、多態(tài)
C++ 接口(抽象類) 描述了類的行為和功能,而不需要完成類的特定實(shí)現(xiàn)。封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個概念,這樣能避免受到外界的干擾和誤用。類和對象體現(xiàn)了抽象和封裝。

繼承允許我們依據(jù)另一個類來定義一個類,這使得創(chuàng)建和維護(hù)一個應(yīng)用程序變得更容易。這樣做,也達(dá)到了重用代碼功能和提高執(zhí)行效率的效果。從一個父類派生出多個子類,可以使子類之間有不同的行為,這種行為稱之為多態(tài)。沒有繼承就沒有多態(tài),繼承是多態(tài)的前提。

c++訪問控制符特點(diǎn)

訪問控制符: public、private 和 protected

public

能被本類的成員函數(shù)、友元函數(shù)、本類的對象、其派生類的成員函數(shù)調(diào)用。

protected

能被本類的成員函數(shù)、友元函數(shù)、其派生類的成員函數(shù)調(diào)用。

private

能被本類的成員函數(shù)、友元函數(shù)調(diào)用。

內(nèi)存區(qū)

一個由C/C++編譯的程序占用的內(nèi)存分為以下五個部分:

棧區(qū)(Stack) : 存放函數(shù)的參數(shù)值,局部變量等。由編譯器自動分配和釋放。
堆區(qū)(Heap) :動態(tài)內(nèi)存分配得到的內(nèi)存空間就是位于堆區(qū)。由程序員主動分配和釋放,若程序員未主動釋放,則程序結(jié)束后自動釋放。
全局/靜態(tài)存儲區(qū):存放全局變量和靜態(tài)變量,程序結(jié)束后自動釋放
常量和代碼區(qū):存放字符串常量,程序結(jié)束后自動釋放
代碼區(qū):存放函數(shù)體的二進(jìn)制代碼

動態(tài)內(nèi)存:

c++新增了new 和 delete字段,new 用來動態(tài)分配內(nèi)存,delete 用來釋放內(nèi)存。
它們可以使用C++的一些新特性,最明顯的是可以自動調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)。
最好不要和C語言中 malloc()、free() 一起混用。

在這里,我們使用指針為變量動態(tài)分配內(nèi)存。

int* pointVar;
pointVar = new int;
*pointVar = 45;

cout<< *pointVar; 

delete pointVar;
3、兩題程序填空 4、一道程序大題 考點(diǎn) 1.c++相對于c的改進(jìn) 聯(lián)系

C++是C的超集,兼容大部分C的語法的結(jié)構(gòu)。

區(qū)別
CC++
思想面向過程面向?qū)ο?/td>
動態(tài)管理內(nèi)存malloc/free函數(shù)new/delete關(guān)鍵字
數(shù)據(jù)類型structclass
默認(rèn)訪問修飾符publicprivate
變量的默認(rèn)鏈接屬性外鏈接內(nèi)鏈接
數(shù)組靜態(tài)數(shù)組動態(tài)數(shù)組
其他重載、引用
2.面向?qū)ο蟪绦蛟O(shè)計(jì)主要特征

四個主要特點(diǎn):抽象、封裝、繼承、多態(tài)

抽象

C++ 接口(抽象類) 接口描述了類的行為和功能,而不需要完成類的特定實(shí)現(xiàn)。
類體現(xiàn)了抽象。

封裝

封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個概念,這樣能避免受到外界的干擾和誤用。
對象體現(xiàn)了封裝。

繼承

繼承允許我們依據(jù)另一個類來定義一個類,這使得創(chuàng)建和維護(hù)一個應(yīng)用程序變得更容易。這樣做,也達(dá)到了重用代碼功能和提高執(zhí)行效率的效果。

多態(tài)

從一個父類派生出多個子類,可以使子類之間有不同的行為,這種行為稱之為多態(tài)。
沒有繼承就沒有多態(tài),繼承是多態(tài)的前提。

3.值傳遞 值傳遞

形參是實(shí)參的拷貝,改變形參的值并不會影響外部實(shí)參的值。從被調(diào)用函數(shù)的角度來說,值傳遞是單向的(實(shí)參->形參),參數(shù)的值只能傳入,不能傳出。當(dāng)函數(shù)內(nèi)部需要修改參數(shù),并且不希望這個改變影響調(diào)用者時(shí),采用值傳遞。

指針傳遞

形參為指向?qū)崊⒌刂返闹羔?,?dāng)對形參的指向操作時(shí),就相當(dāng)于對實(shí)參本身進(jìn)行的操作

4.類的析構(gòu)函數(shù)、成員函數(shù)、構(gòu)造函數(shù)區(qū)別 成員函數(shù)

類的成員函數(shù)是指那些把定義和原型寫在類定義內(nèi)部的函數(shù),就像類定義中的其他變量一樣。類成員函數(shù)是類的一個成員,它可以操作類的任意對象,可以訪問對象中的所有成員。

class Line
{
   public:
      double length; 
      double getVolume(void)
      {
         return length;
      }
};
構(gòu)造函數(shù)

類的構(gòu)造函數(shù)是類的一種特殊的成員函數(shù),它會在每次創(chuàng)建類的新對象時(shí)執(zhí)行。
不會返回任何類型,也不會返回 void。
先基類調(diào)用,再到派生類。

// 成員函數(shù)定義,包括構(gòu)造函數(shù)
Line::Line(void)
{
    cout<< "Object is being created"<< endl;
}
析構(gòu)函數(shù)

類的析構(gòu)函數(shù)是類的一種特殊的成員函數(shù),它會在每次刪除所創(chuàng)建的對象時(shí)執(zhí)行。
析構(gòu)函數(shù)的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為前綴。

調(diào)用構(gòu)造函數(shù)的順序和調(diào)用析構(gòu)函數(shù)的順序相反,先派生類調(diào)用,再基類調(diào)用。

Line::~Line(void)
{
    cout<< "Object is being deleted"<< endl;
}
5.類的定義

類(Class)是面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)信息封裝的基礎(chǔ)。類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型。每個類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或傳遞消息的函數(shù)。類的實(shí)例稱為對象。

class  類名{
訪問范圍說明符:
    成員變量

訪問范圍說明符:
    成員函數(shù)聲明
    ...
};

成員函數(shù)的實(shí)現(xiàn)可以位于類的定義之外,格式如下:

返回值類型  類名:函數(shù)名()
{
    函數(shù)體
}

定義類之后,就可以定義對象了。定義對象的基本方法如下:

類名  對象名;

例子:

#includeusing namespace std;
class CRectangle
{
public:
    int w, h; //成員變量,寬和高
    void init( int w_,int h_ ); //成員函數(shù),設(shè)置寬和高
    int area(); //成員函數(shù), 求面積
}; //必須有分號
void CRectangle::init( int w_,int h_ )
{
    w = w_;  h = h_;
}
int CRectangle::area()
{
    return w * h;
}

int main( )
{
     int w,h;
     cin >>w >>h;
     r.init( w,h);
     cout<< "It's area is "<< r.area()<< endl;
     return 0;
}
6.繼承的概念和性質(zhì)

概念:如果一個類別B“繼承自”另一個類別A,就把這個B稱為“A的子類”。
性質(zhì):繼承可以使得子類具有父類別的各種屬性和方法,而不需要再次編寫相同的代碼。

在類的繼承中,基類成員的訪問特性在派生類中可以改變。

父類類型的子類對象

把子類對象直接賦值給父類對象(即父類對象=子類對象),子類對象賦值給父類對象,僅僅把繼承自父類部分成員函數(shù)賦值給父類對象,賦值完成后等號左邊依然是一個父類對象,不能使用子類擴(kuò)展的成員函數(shù)。

7.抽象類的概念

C++ 使用抽象類來實(shí)現(xiàn)接口,接口描述了類的行為和功能,而不需要完成類的特定實(shí)現(xiàn)。

#includeusing namespace std;
// 基類
class Shape 
{
public:
   // 提供接口框架的純虛函數(shù)
   virtual int getArea() = 0;
protected:
   int width;
   int height;
};
 
// 派生類
class Rectangle: public Shape
{
public:
   int getArea()
   { 
      return (width * height); 
   }
};
8.派生類的概念

超類/父類/基類=>子類/派生類
在構(gòu)建新類的過程中,新建立的類被稱為“子類”或者“派生類”;而被繼承的包含相同特征的類稱為“父類”或者“基類”。 派生類繼承了基類的全部成員,并且可以增加基類所沒有的數(shù)據(jù)成員和成員函數(shù),以滿足描述新對象的需求。

9.虛函數(shù)和多態(tài) 虛函數(shù)

虛函數(shù),是指被virtual關(guān)鍵字修飾的成員函數(shù)。
該函數(shù)可以被實(shí)現(xiàn),同時(shí)允許用基類的指針來調(diào)用子類的該函數(shù)。

純虛函數(shù)

純虛函數(shù)是一種特殊的虛函數(shù),代表該函數(shù)沒有被實(shí)現(xiàn),它的實(shí)現(xiàn)留給派生類去做。
定義純虛函數(shù)是為了實(shí)現(xiàn)一個接口,起到一個規(guī)范的作用。

class Shape {
   public:
      // pure virtual function
      virtual int area() = 0;
};

= 0告訴編譯器,函數(shù)沒有主體,上面的虛函數(shù)是純虛函數(shù)。

靜態(tài)多態(tài)

靜態(tài)多態(tài)就是在系統(tǒng)編譯期間就可以確定程序執(zhí)行到這里將要執(zhí)行哪個函數(shù)。
例如:函數(shù)的重載,對象名.操作符,執(zhí)行成員函數(shù)等。

動態(tài)多態(tài)

動態(tài)多態(tài)利用虛函數(shù)實(shí)現(xiàn)了運(yùn)行時(shí)的多態(tài)。
基類定義虛函數(shù),在子類中重寫基類函數(shù),再定義一個指向基類對象的指針,然后使該指針指向由該基類派生的子類對象,再然后用這個指針來調(diào)用改虛函數(shù),就能實(shí)現(xiàn)動態(tài)多態(tài)。

10.虛繼承和多重繼承 多重繼承

多重繼承指的是一個類可以同時(shí)繼承多個類

class BaseC: public BaseA, public BaseB{
	...
};
虛繼承

為了解決多繼承時(shí)的命名沖突和冗余數(shù)據(jù)問題,C++ 提出了虛繼承,使得在派生類中只保留一份間接基類的成員。
在繼承方式前面加上 virtual 關(guān)鍵字就是虛繼承。
最常見的場景就是菱形繼承:

//間接基類A
class A{};
//直接基類B
class B: virtual public A{};
//直接基類C
class C: virtual public A{};
//派生類D
class D: public B, public C{};
虛繼承的構(gòu)造函數(shù)

在普通繼承中,派生類構(gòu)造函數(shù)中只能調(diào)用直接基類的構(gòu)造函數(shù),不能調(diào)用間接基類的。

在虛繼承中,對最終的派生類來說,虛基類是間接基類,最終派生類的構(gòu)造函數(shù)必須要調(diào)用虛基類的構(gòu)造函數(shù)。

11.數(shù)組定義以及在內(nèi)存中的分配

數(shù)組是在內(nèi)存中連續(xù)存儲的具有相同類型的一組數(shù)據(jù)的集合。元素可通過數(shù)組索引訪問, 最低地址對應(yīng)于第一個元素,最高地址對應(yīng)于最后一個元素。
靜態(tài)數(shù)組名用sizeof可以知道數(shù)組實(shí)際所占的內(nèi)存大小,而指向數(shù)組的指針占用空間即為普通指針的大小。當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),該數(shù)組自動退化為同類型的指針。

靜態(tài)數(shù)組

靜態(tài)初始化:給出初始化值,由系統(tǒng)決定長度。

char ch[]="hello";
動態(tài)數(shù)組

動態(tài)初始化:只指定長度,由系統(tǒng)給出初始化值;

int* Dynamic_Arr3 = new int[size]();     //默認(rèn)的初始化;

分配一個動態(tài)數(shù)組,返回一個T類型的指針,指針指向的是數(shù)組的第一個元素。
指針導(dǎo)致了動態(tài)數(shù)組中size可以取0,即返回一個空指針。分配一個空動態(tài)數(shù)組是合法的。

12.類的靜態(tài)成員

我們可以使用 static 關(guān)鍵字來把類成員定義為靜態(tài)的。當(dāng)我們聲明類的成員為靜態(tài)時(shí),這意味著無論創(chuàng)建多少個類的對象,靜態(tài)成員都只有一個副本。

13.動態(tài)鏈接庫

庫是寫好的現(xiàn)有的,成熟的,可以復(fù)用的代碼。

靜態(tài)庫與匯編生成的目標(biāo)文件一起鏈接為可執(zhí)行文件。

靜態(tài)庫的兩個問題:空間浪費(fèi),更新麻煩。

動態(tài)庫在程序編譯時(shí)并不會被連接到目標(biāo)代碼中,而是在程序運(yùn)行是才被載入。不同的應(yīng)用程序如果調(diào)用相同的庫,那么在內(nèi)存里只需要有一份該共享庫的實(shí)例,規(guī)避了空間浪費(fèi)問題。
動態(tài)庫在程序運(yùn)行時(shí)才被載入,也解決了靜態(tài)庫對程序的更新、部署和發(fā)布頁會帶來麻煩。用戶只需要更新動態(tài)庫即可,增量更新。

14.封裝體

所有的 C++ 程序都有以下兩個基本要素:

  • 程序語句(函數(shù)):程序中執(zhí)行動作的部分。
  • 程序數(shù)據(jù)(成員對象):數(shù)據(jù)是程序的信息,會受到函數(shù)影響。

封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個概念,這樣能避免受到外界的干擾和誤用,從而確保了安全。
數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機(jī)制,數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實(shí)現(xiàn)細(xì)節(jié)隱藏起來的機(jī)制。

15.指針以及使用

指針是一個變量,其值為另一個變量的地址,即,內(nèi)存位置的直接地址。
使用指針時(shí)會頻繁進(jìn)行以下幾個操作:定義一個指針變量、把變量地址賦值給指針、訪問指針變量中可用地址的值。

其他 1、頭文件

c

#include

c++

#includeusing namespace std;

iostream負(fù)責(zé)輸入/輸出流

后綴為.h的頭文件c++標(biāo)準(zhǔn)已經(jīng)明確提出不支持了,早些的實(shí)現(xiàn)將標(biāo)準(zhǔn)庫功能定義在全局空間里,聲明在帶.h后綴的頭文件里,c++標(biāo)準(zhǔn)為了和C區(qū)別開,也為了正確使用命名空間,規(guī)定頭文件不使用后綴.h。
因此,當(dāng)使用時(shí),相當(dāng)于在c中調(diào)用庫函數(shù),使用的是全局命名空間,也就是早期的c++實(shí)現(xiàn).

所謂namespace,是指標(biāo)識符的各種可見范圍。C++標(biāo)準(zhǔn)程序庫中的所有標(biāo)識符都被定義于一個名為std的namespace中。
當(dāng)使用< iostream >的時(shí)候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

2、鏈接屬性

鏈接屬性(linkage)分為三種——外部(external)、內(nèi)部(internal)、無(none)

C語言:
對于external屬性的標(biāo)識符,不同文件中出現(xiàn)的多個同名稱標(biāo)識符指向同一個實(shí)體。
用extern關(guān)鍵字在聲明中指定以引用其他文件中定義的相同標(biāo)識符。

對于internal屬性的標(biāo)識符,僅在當(dāng)前文件內(nèi)該標(biāo)識符指向同一個實(shí)體。
對默認(rèn)屬性為external的標(biāo)識符,用static關(guān)鍵字在聲明中指定讓標(biāo)識符變?yōu)閕nternal。

對于none屬性的標(biāo)識符,在每個聲明位置都是一個新的實(shí)體。C語言中,沒有對應(yīng)的關(guān)鍵字。

默認(rèn)的鏈接屬性
標(biāo)識符的默認(rèn)的鏈接屬性與其出現(xiàn)的位置有關(guān):

  • 程序的全局變量、所有函數(shù)默認(rèn)的鏈接屬性為external。
  • 其余標(biāo)識符的默認(rèn)鏈接屬性為none。
//文件A
int x=0; //默認(rèn)external
void print(void) {
	printf("Hello World!\n");                   
	return 0;                                              
}   
//文件B
int main(){
	extern int x;
	print();
	return 0;
}

C++:
const變量隱含的具有internal屬性

3、實(shí)參和形參

實(shí)參和形參在數(shù)量上、類型上、順序上必須嚴(yán)格一致。

4、轉(zhuǎn)換構(gòu)造函數(shù)

轉(zhuǎn)換構(gòu)造函數(shù)的作用是將一個其他類型的數(shù)據(jù)轉(zhuǎn)換成一個類的對象?
當(dāng)一個構(gòu)造函數(shù)只有一個參數(shù),而且該參數(shù)又不是本類的const引用時(shí),這種構(gòu)造函數(shù)稱為轉(zhuǎn)換構(gòu)造函數(shù)。
轉(zhuǎn)換構(gòu)造函數(shù)是對構(gòu)造函數(shù)的重載。
例如:

Complex(double r)   
{  
    real=r;  
    imag=0;  
} 
5、雙冒號"::"的作用 1、作用域符

:作用域符分為三種:
1)global scope(全局作用域符),用法(::name)
2)class scope(類作用域符),用法(class::name)
3)namespace scope(命名空間作用域符),用法(namespace::name)

2、域操作符

當(dāng)全局變量在局部函數(shù)中與其中某個變量重名,那么就可以用::來區(qū)分

aaa; //全局變量
voidsleep()
{
    aaa; //局部變量
    aaa(局部變量) = aaa(局部變量) *aaa(局部變量) ;
    ::aaa(全局變量) =::aaa(全局變量) *aaa(局部變量);
}
3、作用域分解運(yùn)算符

比如聲明了一個類A,類A里聲明了一個成員函數(shù)voidf(),但沒有在類的聲明里給出f的定義,那么在類外定義f時(shí),就要寫成voidA::f(),表示這個f()函數(shù)是類A的成員函數(shù)。例如

classA {};
 
classA::add()  
{}
  

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:C++期末復(fù)習(xí)-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article6/dsjoig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站軟件開發(fā)、網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航、營銷型網(wǎng)站建設(shè)、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)