對象和類

基本概念

過程性編程:首先要考慮遵循的步驟,然后考慮如何表示這些數(shù)據(jù)。
面向?qū)ο缶幊蹋翰粌H需要考慮如何表示數(shù)據(jù),而且還要考慮如何使用這些數(shù)據(jù)。

類方法:描述如何實現(xiàn)類成員函數(shù)
類聲明:以數(shù)據(jù)成員的方式描述數(shù)據(jù)部分。
public:公共接口的類成員;
private:只能通過公共成員訪問的類成員。

class className
{
private:
public:
protected:
};

(類成員類型可以是函數(shù)也可以是數(shù)據(jù)類型,但由于隱藏數(shù)據(jù)是OOP的主要目的之一,因此數(shù)據(jù)項通常放在私有部分,組成類接口的成員函數(shù)放在公有部分。

實現(xiàn)類成員函數(shù)

定義成員類函數(shù)時,使用作用域解析運算符(::)來標識函數(shù)所屬的類
類方法可以訪問類的private組件。

void stock::update(double price);

這意味著update()函數(shù)是stock類的成員,意味著外面可以將另一個類的成員函數(shù)也可以命名為update()

void buffoon::update();

class和struct的區(qū)別在于,class成員默認是private,而struct成員默認是public。

類的構(gòu)造函數(shù)和析構(gòu)函數(shù)

類的構(gòu)造函數(shù)

常規(guī)的初始化不適用于初始化類stcok,因為數(shù)據(jù)部分的訪問時私有的,因此需要設(shè)計合適的成員函數(shù)才能成果的將對象初始化。一般來說,最好是在創(chuàng)建對象時對它進行初始化。

stock gift;
gift.buy{10,24,75};

類構(gòu)造函數(shù):專門用于構(gòu)造新對象、將值賦給它們的數(shù)據(jù)成員。(名稱和類名相同)。構(gòu)造函數(shù)的原型和函數(shù)頭都沒有返回值,也沒有被聲明為void類型,實際上,構(gòu)造函數(shù)沒有聲明類型。

聲明和定義構(gòu)造函數(shù)

創(chuàng)建stock的構(gòu)造函數(shù),需要為stock對象提供3個值,因此應(yīng)為構(gòu)造函數(shù)提供3個參數(shù)。

stcok(const string & co,long n=0, double pr=0.0);

第一個參數(shù)時指向字符串的指針。n 和pr 時shares和share_val成員的提供值。
構(gòu)造函數(shù)可能的定義為:

stock::Stock(const string &co, long n, double,pr)
{
company=co;
if(n<0)
  {
    std::cerr<<"number if shares cant't be negative;'"<<comapy<<"shares set to 0.\n";
    shares=0
  }
else
  shares=n;
share_val=pr;
set_tot();
}

使用構(gòu)造函數(shù)

顯性調(diào)用

stock food)=Stock(World cabbage",50,2.5);

隱性調(diào)用

Stock garment("Furry Mason", 50,2.5);

注意:構(gòu)造函數(shù)時用來創(chuàng)建對象的,而不能通過對象來調(diào)用。

析構(gòu)函數(shù)

用構(gòu)造函數(shù)創(chuàng)建對象后,程序負責跟蹤該對象,知道其過期為止,對象過期時,程序?qū)⒆詣诱{(diào)用一個特殊的成員函數(shù),析構(gòu)函數(shù)來完成清理工作。如果構(gòu)造函數(shù)使用new來分配內(nèi)存,則析構(gòu)函數(shù)用delete來釋放這些內(nèi)存。
Stock類的析構(gòu)函數(shù)時~Stock()。另外,析構(gòu)函數(shù)么有返回值和聲明類型,且沒有參數(shù)。

stock::~Stock()
{
}

this指針

Stock類聲明雖然可以顯示數(shù)據(jù),但缺乏分析能力。
this指針指向調(diào)用它的對象的地址。

const Stock &topval(const stock & s) const;

topval()函數(shù)隱式的訪問一個對象,而顯示的訪問另一個對象,并返回其中一個對象的引用。括號中的const表示該函數(shù)不會修改被顯式訪問的對象,括號后的const表明,該函數(shù)不會修改被隱式訪問的對象,由于函數(shù)返回了兩個const對象之一,因此返回類型也應(yīng)該用const.

對象數(shù)組

Stock mystuff[4];
mystuff[0].show();

類的作用域

在類中定義的名稱的作用域都為整個類,作用域為整個類的名稱值在該類中時已知的,在類外時不可知的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容