C++:物件導向

來源:互聯網
上載者:User

標籤:友元   hda   sage   無法   ram   Null 字元串   訊息   不同的   類型轉換   

物件導向的特性

Abstraction(抽象)

Polymorphism(多態)

Inheritance(繼承)

Encapsulation(封裝)

 

類的定義

class Circle{

public:

  double radius;

  Circle(){

    radius = 1;

  }

  Circle(double r){

    radius = r;

  }

  double getArea(){

    return radius*radius*3.14159;

  }

};

 

類是一種資料類型

對象指標:用指標訪問對象成員

Circle circle1;

Circle *pCircle = &circle1;

兩者效果相同:

(*pCircle).radius

pCircle->radius

 

在堆上建立對象

在函數中聲明的對象都一般在棧上建立,函數返回後對象就被銷毀。為了保留對象,可以用new運算子在堆上建立它。

ClassName *pObject = new ClassName();

delect pObject; //當程式結束時動態對象會被系統銷毀,程式員也可以手動顯示銷毀

 

建立string對象

用無參建構函式創造一個Null 字元串

string newString;

用一個字串常量建立string對象

string message("Aloha World");

用字串數組建立string對象

char charArray[] = {‘H‘,‘e‘,‘l‘,‘l‘,‘o‘,‘\0‘};

string message1(charArray)

 

內建指標this:指向當前函數的調用對象

 

建構函式的初始化

 

 

當類的資料域是一個物件類型,而且當這個對象的類本身沒有無參建構函式時,須通過初始化列表來初始化對象。

 

靜態成員

 

 

可以通過類或者對象調用靜態函數,只能通過對象調用非靜態函數。

當變數或者函數不依賴於類的執行個體時,可以將此變數/函數定義為靜態。

 

解構函式

友元:通過friend聲明友元函數或者友元類,從而可以通過友元訪問private成員

 

拷貝建構函式(copy constructor)

ClassName(ClassName&)

喚起拷貝建構函式:

ClassName obj1(obj2);

或 ClassName obj1 = obj2;  //只能在初始化時拷貝

淺拷貝:拷貝指標,而非指標所指向的內容

深拷貝:擷取原指標的內容,建立新指標,拷貝原指標指向的內容到新指標裡

定製深拷貝建構函式:

Person::Person(Person& person){

  id = person.id;

  Date* p = person.getBirthDate();

  birthDate = new Date(*p);

}

 

Vector類

繼承

DerivedClass(parameterList) : BaseClass() { }

DerivedClass(parameterList) : BaseClass(argumentList) { }

多態:不同的對象對相同的訊息有不同的相應

聯編:確定具有多態的語句調用哪個函數的過程

-> 靜態聯編:在程式編譯時間確定調用哪個函數(函數重載)

-> 動態聯編:在程式運行時才確定調用哪個函數(運行時多態)

虛函數(virtual)

如何?函數的動態聯編:

1)基類定義同名虛函數

2)訪問對象的成員函數時,要用指向對象的指標或者對象引用

基類與衍生類別中有同名函數時:

1,通過衍生類別對象訪問同名函數 -> 靜態聯編

2,通過基類對象的指標訪問同名函數 -> 靜態聯編

3,通過基類對象的指標訪問同名虛函數 ->動態聯編

抽象類別:完全無法執行個體化的類

純虛函數:

在抽象類別GemoetricObject裡定義函數virtual double getArea() = 0;

 

動態類型轉換

 

C++:物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.