【C++物件導向學習筆記】-基礎知識__C++

來源:互聯網
上載者:User
1.基本概念

物件導向程式設計是利用對象來進行程式設計。一個對象表示現實世界中一個獨一無二的實體。例如,一名學生、一張桌子、一個圓等都可以看作對象。一個對象具有唯一的身份、狀態和行為。一個對象的狀態用資料域以及它們的當前值來表示。一個對象的行為由一組函數定義,對一個對象調用一個函數就是請求對象執行一個任務。

相同類型的對象用一個通用的類來定義。一個類是一個模板或者一個藍圖,它定義了對象具有什麼樣的資料和函數。一個對象就是類的一個執行個體,我們可以建立一個類的多個對象。建立一個執行個體稱為執行個體化。新建立的對象儲存在一塊記憶體地區中,當對象建立後,我們可以使用點運算子( . ),也就是所謂的對象成員訪問運算子,來訪問對象的資料,調用對象的函數。下面是一個例子:

class Circle{public:double radius;Circle();{radius=1;}Circle(double newRadius){radius=newRadius;}double getArea(){return radius*radius*3.14159;}};int main(){Circle circle1;Circle circle2(5.0);cout<<”The area of the circle of radius”<<circle1.radius<<”is”<<circle1.getArea()<<endl;cout<<”The area of the circle of radius”<<circle2.radius<<”is”<<circle2.getArea()<<endl;circle2.radius=100;cout<<”The area of the circle of radius”<<circle2.radius<<”is”<<circle2.getArea()<<endl;return 0;}

程式輸出的結果如下:

The area of the circle of radius 1 is 3.14159

The area of the circle of radius 5 is 78.5397

The area of the circle of radius 100 is 31415.9

注意點:

1)在類定義末尾一定要有一個分號(;),union和struct也是如此。

2)一個類成員,資料域是不能在聲明時進行初始化的,可以在建構函式中為其賦值。 2.聲明和實現分離

C++允許將類的聲明和實現分離。類聲明描述了類的約定,而類實現則實現了這一約定。類聲明簡單地列出所有資料域、建構函式原型和函數原型,類實現給出建構函式和成員函數的實現,兩者置於兩個分離的檔案中。兩個檔案應該使用相同的名字,但具有不同的副檔名。類聲明檔案的副檔名為.h,類實現副檔名為.cpp。現將上面的例子進行聲明和實現的分離。

程式清單 Circle.h

class Circle{public:double radius;Circle();Circle(double newRadius);double getArea();};

程式清單Circle.cpp

#include “Circle.h”Circle::Circle(){radius=1;}Circle::Circle(double newRadius){radius=newRadius;}double Circle::getArea(){return radius*radius*3.14159;}

注意點:

1)每個建構函式和函數之前的Circle::是必須的,它告知編譯器這些函數是定義於Circle類中的。在C++中,符號::稱為二元範圍解析運算子。

2)如果一個函數是在類聲明內實現的,那麼它就自動地成為一個內嵌函式。還有另外一種方法將類成員函式宣告為內聯的,在類實現檔案中用inline指明成員函數是內嵌函式。 3.對象指標與對象數組

1)對象指標

對象名一旦聲明後,就無法修改。但是,我們可以建立對象指標,只要需要,任何時候都可以將對象地址賦予指標。例如:

Circle circle1;

Circle *pCircle=&circle1;

通過指標訪問對象成員,有以下兩種辦法。第一種,對指標解引用,然後使用點運算子( . )訪問對象成員。第二種,C++提供了一種簡寫的成員選擇運算子,箭頭運算子(->)。下面是分別用以上兩種方法實現指標訪問對象成員的例子:

cout<<”The radius is “<<(*pCircle).radius<<endl;

cout<<”The area is”<<pCircle->getArea()<<endl;

2)對象數組

我們可以建立元素為基礎資料型別 (Elementary Data Type)的數組,同樣,我們也可以建立對象數組。例如:

Circle circleArray[10];

這條語句會調用無實參建構函式來初始化數組中的元素。

注意:在聲明對象指標時,只是聲明了一個指向對象的指標,並不會調用建構函式;而在聲明對象數組時,會先調用建構函式來初始化對象元素。 4.變數範圍

在類中,只能為一個資料域聲明一個成員變數,但一個變數名可用在多個不同的函數中聲明多個局部變數。局部變數在函數內聲明,只能在函數內局部使用。如果(成員函數中)一個局部變數與一個資料域具有相同的名字,資料域將被屏蔽,因為局部變數的優先順序更高。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.