




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章
類與對(duì)象
第五章類與對(duì)象
§5.1面向?qū)ο蠓椒?/p>
§5.2類的定義
§5.3對(duì)象的創(chuàng)建
§5.4對(duì)象的初始化
§5.5特殊的類成員
§5.1面向?qū)ο蠓椒?/p>
?面向?qū)ο蟮幕舅枷?/p>
?面向?qū)ο笏枷氲挠蓙砼c發(fā)展
.面向?qū)ο蟮幕?既念
◎
§5.1面向?qū)ο蠓椒?/p>
面向?qū)ο蟮幕舅枷?/p>
■從現(xiàn)實(shí)世界中客觀存在的事物(對(duì)象)出發(fā)
來構(gòu)造系統(tǒng)
對(duì)象:對(duì)問題領(lǐng)域內(nèi)人、物、事情等的抽象
■并在系統(tǒng)構(gòu)造中運(yùn)用人類的自然思維方式
(抽象、分類、組合、繼承、封裝)
§5.1面向?qū)ο蠓椒?/p>
面向?qū)ο蟛粌H是一些具體的軟件開發(fā)
技術(shù),它是一整套關(guān)于如何看待軟件系
統(tǒng)與現(xiàn)實(shí)世界關(guān)系,以何種觀點(diǎn)來研究
問題并進(jìn)行求解,以及如何進(jìn)行系統(tǒng)構(gòu)
造的軟件方法學(xué)
§5.1面向?qū)ο蠓椒?/p>
?用面向?qū)ο笏枷霕?gòu)造軟件的主要內(nèi)容
①對(duì)象是系統(tǒng)的基本單位
②對(duì)象的屬性和操作的有機(jī)結(jié)合組成一個(gè)完
整的對(duì)象
③具有共同特征的對(duì)象抽象成類
④對(duì)類進(jìn)一步抽象,形成類簇
⑤對(duì)象之間存在靜態(tài)關(guān)系和動(dòng)態(tài)關(guān)系(組合、
繼承、消息等)
§5.1面向?qū)ο蠓椒?/p>
面向?qū)ο蠡舅枷搿橄?/p>
?現(xiàn)實(shí)世界的事物抽象成對(duì)象
?現(xiàn)實(shí)世界事物之間的關(guān)系抽象成軟件系統(tǒng)中
對(duì)象之間的關(guān)系
?具有共同特征的對(duì)象抽象成類
?具有共同特征的類抽象成基類和派生類
§5.1面向?qū)ο蠓椒?/p>
面向?qū)ο蠡舅枷搿庋b
?對(duì)象是屬性和操作的組合
?對(duì)象的表現(xiàn)(服務(wù),接口)和實(shí)現(xiàn)細(xì)節(jié)分開
§5.1面向?qū)ο蠓椒?/p>
?面向?qū)ο蠓椒ǖ亩x
利用抽象、封裝等機(jī)制,借助于對(duì)
象、類、繼承、消息傳遞等概念進(jìn)行軟
件系統(tǒng)構(gòu)造的軟件開發(fā)方法
§5.1面向?qū)ο蠓椒?/p>
?面向?qū)ο蟮挠蓙砼c發(fā)展
面向?qū)ο蠓椒ㄆ鹪从诿嫦驅(qū)ο蟮木幊陶Z言
在編程語言得到充分發(fā)揮和應(yīng)用的同時(shí),面向
對(duì)象方法得到了發(fā)展。
反過來又為面向?qū)ο缶幊烫峁┝讼绕诘脑O(shè)計(jì)和
指導(dǎo)
§5.1面向?qū)ο蠓椒?/p>
?面向?qū)ο蠓椒ㄊ擒浖碚摰姆佃睔w真
?軟件開發(fā)的發(fā)展過程
面向過程
程序員面向數(shù)據(jù)
的智慧
面向功能
和技巧面向?qū)ο?/p>
面向應(yīng)用
面向數(shù)據(jù)流
§5.1面向?qū)ο蠓椒?/p>
面向?qū)ο蠡靖拍?/p>
?對(duì)象
?消息
?類
?類與對(duì)象的關(guān)系
§5.1面向?qū)ο蠓椒?/p>
對(duì)象
?對(duì)象是對(duì)問題域中客觀存在的事物的抽象,它
是一組屬性和在這些屬性上的操作的封裝體
?對(duì)象的兩大要素:屬性和操作
-屬性:狀態(tài),特征,組成成員
-操作:修改屬性,訪問屬性,執(zhí)行命令
§5.1面向?qū)ο蠓椒?/p>
例:“文件”作為一個(gè)對(duì)象
屬性:操作:
文件名一filename文件復(fù)制----copy
文件長(zhǎng)度一length文件更名----rename
修改日期一modify-date文件打印----print
文件內(nèi)容一contents
§5.1面向?qū)ο蠓椒?/p>
消息
向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求
■是面向?qū)ο笙到y(tǒng)中對(duì)象之間交互的途徑
■要素:發(fā)送者、接受者、服務(wù)、參數(shù)
■oopl中的消息是對(duì)類的成員函數(shù)的調(diào)用
■對(duì)消息的響應(yīng)取決于接受消息的對(duì)象
§5.1面向?qū)ο蠓椒?/p>
類class
?類是具有相同屬性和操作的一組對(duì)象的集合,它為屬
于該類的全部對(duì)象提供了統(tǒng)一的抽象描述
。類是對(duì)一類對(duì)象的抽象
。類定義了這一類對(duì)象所共有的特征和行為
人類抽象思維的產(chǎn)物
Ooopl中的類相當(dāng)于一種數(shù)據(jù)類型
§5.1面向?qū)ο蠓椒?/p>
類與對(duì)象的關(guān)系
?類是抽象的,對(duì)象是具體的
?類是模板,對(duì)象是實(shí)例
?類是類型,對(duì)象是變量
?類是靜態(tài)的,對(duì)象是動(dòng)態(tài)的
§5.1面向?qū)ο蠓椒?/p>
?類是具有相似特征的對(duì)象的抽象
-文件類所有具體文件對(duì)象的抽象
-書類所有具體書對(duì)象的抽象
-學(xué)生類所有具體學(xué)生對(duì)象的抽象
§5.2類的定義
?類定義的一般形式
?內(nèi)聯(lián)函數(shù)與非內(nèi)聯(lián)函數(shù)
?類成員的訪問控制
?類作用域
§5.2類的定義
?類定義的一般形式
class類名嘉合森
類定義
public:、體中的
公有數(shù)據(jù)和函數(shù)數(shù)據(jù)和
>函數(shù)分
別稱為:
private:數(shù)據(jù)成
員和成
私有數(shù)據(jù)和函數(shù)員函數(shù)
分號(hào)不能丟!
§5.2類的定義
?類定義體中包括兩種類的成員:
數(shù)據(jù)成員和函數(shù)成員
?通常類的定義格式:
class類名
(
public:
成員函數(shù)
private:
數(shù)據(jù)成員
};
§5.2類的定義
例:定義一個(gè)“文件”類
classFILE
public:
boolcopy(FILE&target);
操作
boolrename(char*new_name);>
成員函數(shù)
boolprint();,
private:
charfile_name[100];
屬性
intlength;
數(shù)據(jù)成員
char.contents;
);
§5.2類的定義
?操作的實(shí)現(xiàn)(成員函數(shù)的定義)
boolFILE::copy(.......)
}
boolFILE::rename(......)
}
boolFILE::print()
§5.2類的定義
?注:
①類中說明的數(shù)據(jù)成員不能初始化
②類中數(shù)據(jù)成員的類型可以是int,char,
float等各種數(shù)據(jù)類型,還可以是對(duì)象
§5.2類的定義
?內(nèi)聯(lián)函數(shù)與非內(nèi)聯(lián)函數(shù)
(1)內(nèi)聯(lián)函數(shù)
classFILE
(
boolrename(char*new_name)
{"
strcpy(filename,newname);
}一"
);
成員函數(shù)的函數(shù)體定義在類體內(nèi)
§5.2類的定義
⑵非內(nèi)聯(lián)函數(shù)
classFILE
(
boolrename(char*new_name);
};
boolFILE::rename(char*newname)
(-
strcpy(file_name,new_name);
}~~
注:在類體外定義的成員函數(shù)要在函數(shù)名前加上類名,以便與普
通函數(shù)相區(qū)別
§5.2類的定義
⑶二者比較
內(nèi)聯(lián)函數(shù)的好處:
類的定義集中(將類的所有成員都放在類定義體中)
運(yùn)行速度快
內(nèi)聯(lián)函數(shù)的缺點(diǎn):
類定義的規(guī)模太大
可讀性不好
通常,將簡(jiǎn)單的函數(shù)作為內(nèi)聯(lián)函數(shù)
將功能復(fù)雜的函數(shù)作為非內(nèi)聯(lián)函數(shù)
§5.2類的定義
?類定義可分為類界面與類實(shí)現(xiàn)
類界面:只包括類的所有數(shù)據(jù)成員和成
員函數(shù)原型
存放在頭文件中(.HPP)
類實(shí)現(xiàn):包括類的所有成員函數(shù)的定義
存放在源文件中(.CPP)
§5.2類的定義
?類的成員的訪問控制(封裝在類中的實(shí)現(xiàn))
一公有(public)-公開
--保護(hù)(protected)■適當(dāng)公開
"私有(private)“不公開
§5.2類的定義
?封裝(信息隱藏)
實(shí)現(xiàn)(implementation)
接口(interface)
§5.2類的定義
?封裝的好處
9用戶角度:簡(jiǎn)單
只了解接口,不用了解細(xì)節(jié)
只需要結(jié)果,不規(guī)定實(shí)現(xiàn)方式
0對(duì)象角度:保護(hù)
信息安全(不直接訪問數(shù)據(jù))
安全審計(jì)(auditing)
§5.2類的定義
訪問控制的基本原則:
?類的數(shù)據(jù)成員一般不公開
"private,protected
?表示接口的成員函數(shù)一般公開
—public
?與實(shí)現(xiàn)細(xì)節(jié)有關(guān)的成員函數(shù)不公開
—private,protected
§5.2類的定義
注:
?默認(rèn)的類成員訪問控制方式為private
?各種訪問控制方式在類定義體中的先后
順序無關(guān)
?通常將對(duì)外接口部分pub1ic放在前
舉例:用“售報(bào)亭”對(duì)象描述現(xiàn)實(shí)中的一個(gè)售
報(bào)亨
報(bào)刊A
屬報(bào)刊B
性
錢箱
月艮報(bào)刊零售
務(wù)貨款清單
/
消息、:顧客對(duì)售報(bào)亭說:“買一份《每日新報(bào)》!"
消息的接受者:某個(gè)售報(bào)亭
要求的服務(wù):報(bào)刊零售
輸入的信息:要買的報(bào)刊種類,份數(shù)和遞進(jìn)去的錢
返回的信息:買到的報(bào)紙和找回的零錢
§5.2類的定義
類作用域
類的作用域包括:
類的定義體{);
類的所有非內(nèi)聯(lián)函數(shù)的定義體
類成員的作用域是類作用域
類對(duì)象的作用域遵循一般變量的作用域規(guī)則
§5.3對(duì)象的創(chuàng)建
?直接創(chuàng)建對(duì)象
?使用對(duì)象成員
?對(duì)象的作用域與生存期
?舉例
§5.3對(duì)象的創(chuàng)建
?創(chuàng)建對(duì)象有兩種方式:
直接創(chuàng)建
動(dòng)態(tài)創(chuàng)建(用new運(yùn)算符創(chuàng)建)
嵩?直接創(chuàng)建對(duì)象
格式:〈類名〉〈對(duì)象名表》
例如:FILEfl,f2;?>intx9y;
夢(mèng)?一
殍卜
4§5.3對(duì)象的創(chuàng)建
使用對(duì)象成員
格式:
〈對(duì)象名〉?〈數(shù)據(jù)成員名〉
或〈對(duì)象名〉?〈函數(shù)成員名〉(參數(shù)表)
?其中〈稱為成員選擇運(yùn)算符
§5.3對(duì)象的創(chuàng)建
訪問成員變量
strcpy(fl.filename,"oopd.daf5);
f2.1ength+=:10;
訪問成員函數(shù)
fl.copy(f2);注:只有public的成員
才能調(diào)用或訪問
fl.renameC'classA");
§5.3對(duì)象的創(chuàng)建
對(duì)象的作用域與生存期
?遵循一般變量的作用域、生存期規(guī)則
.例:[兵局對(duì)象]
FILEmyfile;
voidmain()
(局部對(duì)象
1-----
FILEyourfile;、
myfile.copy(yourfile);
yourfile.renameCcnewname55);J
§5.3對(duì)象的創(chuàng)建
?域操作符::
::identifier文件域標(biāo)識(shí)符
②classname:identifier類域標(biāo)識(shí)符
③identifier當(dāng)前域標(biāo)識(shí)符
boolFILE::rename(charfilename)
strcpy(FILE::filename,filename);
舉例:定義一個(gè)日期類,該類的對(duì)象是某個(gè)具體日期
〃日期類的界面
classDATE
{
public:
voidsetdate(inty,intm,intd);
intisleapyear();
voidprint();
private:
intyear,month,day;
};
//以上存入date,hpp文件中
〃日期類的實(shí)現(xiàn)
#include''date.hpp”
voidDATE::setdate(inty,intm,intd)
(
year=y;
month=m;
day=d;
}
intDATE::isleapyear()
{
return(year%4=0&&year%100!=0)||(year%400==0);
}
voidDATE::print()
(
cout?year?',,?month?',,?day?endl;
}
〃以上存入date.cpp文件中
〃分析下列程序的輸出結(jié)果
#include<iostream.h>
#include"date.cpp''
voidmain()
(
DATEdl,d2;
dl.setdate(199655,4);
d2.setdate(2004,l1,8);
intleapedl.isleapyear();程序執(zhí)行結(jié)果:
cout?leap?endl;1
dl.print();1996,5,4
d2.print();2004,11,8
§5.4對(duì)象的初始化
.對(duì)象的初始化問題
.構(gòu)造函數(shù)
.構(gòu)造函數(shù)的含義及特點(diǎn)
.默認(rèn)構(gòu)造函數(shù)
.析構(gòu)函數(shù)
同
§5.4對(duì)象的初始化
類對(duì)象成員不能在類定義時(shí)初始化
classFILE
(
public:
private:
intlength=O;
charfHe_name[]="testcpp'';
);
類是一種模板,類定義時(shí)并不分配內(nèi)存
§5.4對(duì)象的初始化
另一種情況:
FILEmyfile;
myfile.filename[]="test.cpp'';
數(shù)據(jù)成員file_name是私有的,外界不能訪問,
只能通過類中定義的成員函數(shù)來訪問
§5.4對(duì)象的初始化
?類成員的初始化在對(duì)象創(chuàng)建時(shí)進(jìn)行
FILEmy_flle("test.cpp");
FILEyourfileC'noname.cpp59);
?實(shí)現(xiàn):構(gòu)造函數(shù)
§5.4對(duì)象的初始化
構(gòu)造函數(shù)與析構(gòu)函數(shù)
在C++中,類的成員函數(shù)有兩種:
(1)構(gòu)造函數(shù)與析構(gòu)函數(shù)
⑵普通的成員函數(shù)
構(gòu)造函數(shù)與析構(gòu)函數(shù)是在類定義體中說明的
兩個(gè)特殊的成員函數(shù)
§5.4對(duì)象的初始化
classFILE
(
public:
FILE(charname[]);〃構(gòu)造函數(shù)
private:
intlength;
charfile_name[100];
/
);
§5.4對(duì)象的初始化
?構(gòu)造函數(shù)的實(shí)現(xiàn)
FILE::FILE(charname[])
{
strcpy(file_name9name);
length=O;
§5.4對(duì)象的初始化
構(gòu)造函數(shù)的調(diào)用時(shí)間
在對(duì)象建立時(shí)由系統(tǒng)自動(dòng)調(diào)用
FILEmyfilef'myfile.cpp55);
FILE*pfile=newFILEf'yourfile.cpp55);
§5.4對(duì)象的初始化
構(gòu)造函數(shù)的含義
直接含義:
對(duì)象建立時(shí),初始化對(duì)象的數(shù)據(jù)成員
間接含義:
構(gòu)造一個(gè)具有意義的、正確的對(duì)象
§5.4對(duì)象的初始化
構(gòu)造函數(shù)的特點(diǎn)
?是類的成員函數(shù)
?函數(shù)名與類名相同(區(qū)別于其他成員函數(shù))
?無返回值,void也不能有(只進(jìn)行初始化)
?由系統(tǒng)自動(dòng)調(diào)用(當(dāng)對(duì)象被創(chuàng)建時(shí))
?必須是公有(public)成員(系統(tǒng)調(diào)用也遵守訪問控制規(guī)則)
?可以重載
?可以初始化常量數(shù)據(jù)成員
§5.4對(duì)象的初始化
?構(gòu)造函數(shù)舉例
#include<iostream.h>
classRECT
(
public:
RECT(int19intw);
voidarea();
private:
intlength,width;
);
RECT::RECT(int1,intw)
(
length=l;
width=w;
}
voidRECT::area()
(
cout?4tarea=,,?length*width?endl;
}
voidmain()
(
RECTa(5,8);
RECTb(9,4);
a.area();
b.area();
§5.4對(duì)象的初始化
程序執(zhí)行結(jié)果:內(nèi)存分配情況:
area=40
area=36
§5.4對(duì)象的初始化
?構(gòu)造函數(shù)的重載
classPOLYGON
(
public:
POLYGON();〃默認(rèn)構(gòu)造函數(shù)
POLYGON(intedgNum);
POLYGON(charcolor,intedgNum=3);
private:
intedgnum;〃邊的個(gè)數(shù)
charlinecolor;〃線的顏色
POINTpoint[100];〃各頂點(diǎn)位置
);
§5.4對(duì)象的初始化
默認(rèn)構(gòu)造函數(shù)
POLYGON::POLYGON()
(
edg_num=3;
line_color=0;
fbr(inti=0;i<edg_num;i++)
point[i].x=point[i].y=0;
每個(gè)頂點(diǎn)坐標(biāo)x,y位置初始值為0
§5.4對(duì)象的初始化
帶參數(shù)的構(gòu)造函數(shù)
POLYGON::POLYGON(intedgNum)
edg_num=edgNum;
line_color=0;
fbr(inti=0;i<edg_num;i++)
point[i].x=point[i].y=0;
§5.4對(duì)象的初始化
?創(chuàng)建兩個(gè)對(duì)象:(在主程序中)
POLYGONpgl;〃自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù)
POLYGONpg2(4);〃自動(dòng)調(diào)用帶參數(shù)構(gòu)造函數(shù)
§5.4對(duì)象的初始化
默認(rèn)構(gòu)造函數(shù)
每個(gè)類必須有一個(gè)構(gòu)造函數(shù)
如果沒定義構(gòu)造函數(shù),則C++系統(tǒng)提供默認(rèn)構(gòu)造函數(shù)
(donothing)
如果定義了構(gòu)造函數(shù),則C++不再提供默認(rèn)構(gòu)造函數(shù)
如:POLYGONpgl;〃無初始化值的對(duì)象
必須要有一個(gè)默認(rèn)的構(gòu)造函數(shù)!
§5.4對(duì)象的初始化
析構(gòu)函數(shù)
類的特殊的成員函數(shù)
構(gòu)造函數(shù)
在類的對(duì)象創(chuàng)建時(shí)由系統(tǒng)自動(dòng)調(diào)用的函數(shù)
析構(gòu)函數(shù)
在類的對(duì)象生命期結(jié)束時(shí)由系統(tǒng)自動(dòng)調(diào)用
的函數(shù)
§5.4對(duì)象的初始化
例:
#include<iostream.h>
classDEMO_CLASS
{
public:
DEMO_CLASS(inti);
^DEMO_CLASS();〃析構(gòu)函數(shù)
);
DEMO_CLASS::DEMO_CLASS(inti)
(
cout?ctInitialvalueis:,,?i?endl;
return;
)
DEMOCLASS::?DEMO_CLASS()
{——
cout?“Goodby!\n'';
return;
)
voidmain()
(
DEMO_CLASSobj(30);〃創(chuàng)建一個(gè)對(duì)象obj
cout?ctThisistheendofmain(
§5.4對(duì)象的初始化
?程序執(zhí)行結(jié)果:
Initialvalueis:30
Thisistheendofmain().
Goodby!
?說明:
(1)對(duì)象obj的作用域及生命期在main()內(nèi),對(duì)象創(chuàng)建
時(shí)自動(dòng)調(diào)用構(gòu)造函數(shù)
(2)程序執(zhí)行到main()的y處,貝》obj的生命期結(jié)束,
系統(tǒng)自動(dòng)調(diào)用析構(gòu)函數(shù),并收回obj所占用的內(nèi)存
空間
§5.4對(duì)象的初始化
析構(gòu)函數(shù)的特點(diǎn):
?是類的成員函數(shù)
?函數(shù)名為類名前加'?'(邏輯反運(yùn)算符)
?無返回值,void也不能有
?無參數(shù)
?由系統(tǒng)自動(dòng)調(diào)用(當(dāng)對(duì)象生命期結(jié)束時(shí))
?必須是公有(public)成員(系統(tǒng)調(diào)用也遵守訪問控
制規(guī)則)
?不可以重載
§5.4對(duì)象的初始化
析構(gòu)函數(shù)的意義
?直接意義
-在對(duì)象退出生命期前由系統(tǒng)調(diào)用的函數(shù)
?間接意義
-對(duì)象能正確、合理地退出生命期
?如:釋放占用資源,通知有關(guān)對(duì)象
§5.4對(duì)象的初始化
構(gòu)造函數(shù)和析構(gòu)函數(shù)
?相同點(diǎn)
-由系統(tǒng)自動(dòng)調(diào)用
-沒有返回值
-公有函數(shù)
?不同點(diǎn)
-作用不同,調(diào)用時(shí)間不同
-構(gòu)造函數(shù)可以重載,可以有參數(shù)
§5.5特殊的類成員
?常量成員
對(duì)象一旦定義,就不能更改該成員
?靜態(tài)成員
不屬于對(duì)象的成員,由類的所有對(duì)象共享
?對(duì)象成員
一個(gè)類的對(duì)象作為另一個(gè)類的數(shù)據(jù)成員
§5.5特殊的類成員
口常量成員
口靜態(tài)成員
口對(duì)象成員
§5.5特殊的類成員
?常量成員:對(duì)象一旦定義,就不能更改該成員
?用const說明的成員,稱為常量成員
?常量成員的定義
常量數(shù)據(jù)成員的定義:constintedgnum;
常量成員函數(shù)的定義:voidprint()const;
§5.5特殊的類成員
常量數(shù)據(jù)成員只能初始化,不能被賦值
例:
classSILLY
public:
SILLY()
ten=10;常量不能賦值!
private:
constintten;
);
§5.5特殊的類成員
常量成員的初始化
classSILLY
public:
SILLY():ten(10)〃初始化常量數(shù)據(jù)成員
〃此處不能再對(duì)ten賦值
private:
constintten;
};
§5.5特殊的類成員
?例:定義一個(gè)多邊形的類
classPOLYGON
(
public:
private:
constintedgnum;〃邊數(shù)確定的對(duì)象
charlinecolor;
);
注:常量成員不能作為左值
§5.5特殊的類成員
?方法一
POLYGON::POLYGON():edg_num(3)
{
line_color=0;
for(……)
?方法二
POLYGON::POLYGON(intedgNum):edgnum(edgNum)
{"
line_color=0;
for(……)
....;用構(gòu)造函數(shù)的參數(shù)edgNum的
}值初始化常量成員edgnum
§5.5特殊的類成員
?常量成員的使用注意:
⑴常量成員只能初始化,不能賦值
⑵常量成員的初始化必須在成員初始化參
數(shù)表中進(jìn)行
§5.5特殊的類成員
非常量成員,也可在成員初始化參數(shù)表中進(jìn)
行初始化
例:
POLYGON::POLYGON(charcolor,intedgNum)
:edgnum(edgNum),linecolor(color)
fbr(inti=0;........)
§5.5特殊的類成員
?靜態(tài)成員
-用static說明的成員
?靜態(tài)成員分為:
-靜態(tài)數(shù)據(jù)成員
-靜態(tài)函數(shù)成員
?靜態(tài)成員由類的所有對(duì)象共享
(不屬于某個(gè)對(duì)象)
§5.5特殊的類成員
?彳列:要記錄FILE類中有多少個(gè)文件對(duì)象
classFILE
(
public:
staticintget_file_number()〃靜態(tài)成員函數(shù)
{——
returnfilenumber;
}"
private:
staticintfilenumber;〃靜態(tài)數(shù)據(jù)成員
};
§5.5特殊的類成員
?理解靜態(tài)成員
§5.5特殊的類成員
靜態(tài)成員的使用
⑴靜態(tài)成員的初始化必須在全局范圍進(jìn)行
intFILE::file_number=O;
classFILE
(
private:\/
staticintfilenumber=O;X
);A
voidmain()
intFILE::file_number=O;
§5.5特殊的類成員
⑵靜態(tài)數(shù)據(jù)成員可以由所有成員函數(shù)訪問
voidFILE::incFileNum()
(
file_number++;
}"
⑶靜態(tài)成員函數(shù)只可以訪問靜態(tài)數(shù)據(jù)成員
staticintget_file_number()〃靜態(tài)成員函數(shù)
cout?file_name;V//是對(duì)象的特征
returnfile_number;\/
§5.5特殊的類成員
靜態(tài)成員的用途
記錄對(duì)象個(gè)數(shù)(用來保存流動(dòng)變化的對(duì)象個(gè)數(shù))
一般在構(gòu)造函數(shù)中增加,析構(gòu)函數(shù)中遞減
所有對(duì)象共享資源(它不屬于某個(gè)對(duì)象)
如:內(nèi)存,文件,數(shù)據(jù)庫(kù),打印機(jī)等
?例:分析程序執(zhí)行結(jié)果
#include<iostream.h>
classMYCLASS
public:
MYCLASS(inta,intb,intc);
voidget_number();
voidget_sum();
private:
intx,y,z;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年語文考查項(xiàng)目與實(shí)施計(jì)劃試題及答案
- 小學(xué)一年級(jí)語文技能提升試題及答案
- 浙江省浙北G2聯(lián)盟2022-2023學(xué)年高一下學(xué)期4月期中聯(lián)考生物學(xué)試題(含答案)
- 2024年統(tǒng)計(jì)學(xué)考試學(xué)習(xí)難點(diǎn)闡述試題及答案
- 2024年汽車維修工輪胎與懸掛試題及答案
- 小學(xué)一年級(jí)語文試題及答案全面展示
- 二手車評(píng)估的心理因素分析試題及答案
- 2024年市場(chǎng)營(yíng)銷領(lǐng)域的案例分析能力試題及答案
- 2024年計(jì)算機(jī)基礎(chǔ)知識(shí)測(cè)驗(yàn)試題及答案
- 2024年小學(xué)六年級(jí)語文考試的試題及答案總結(jié)
- 健康醫(yī)療大數(shù)據(jù)分析合同
- 《SLT 377-2025水利水電工程錨噴支護(hù)技術(shù)規(guī)范》知識(shí)培訓(xùn)
- 2024-2025學(xué)年人教版(2024)七年級(jí)數(shù)學(xué)下冊(cè)第八章實(shí)數(shù)單元檢測(cè)(含答案)
- 膀胱癌部分切除護(hù)理查房
- 兒童心理健康與家庭教育關(guān)系
- 2025屆山東省臨沂市高三下學(xué)期一模考試英語試卷(含解析)
- 2025年河南水利與環(huán)境職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)學(xué)生專用
- 2025年人體捐獻(xiàn)協(xié)議
- 專題06+函數(shù)與導(dǎo)數(shù)領(lǐng)域中的典型壓軸小題全歸納與剖析課件
- 員工黃賭毒法制培訓(xùn)
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末英語試題(答案)
評(píng)論
0/150
提交評(píng)論