国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C++語言學(xué)習(xí)之從結(jié)構(gòu)到類

2019-11-17 05:44:56
字體:
供稿:網(wǎng)友

  編程之前,有必要復(fù)習(xí)一下C++中面向?qū)ο蟮囊恍┗靖拍睢N覀冎溃珻++與C相比有許多優(yōu)點(diǎn),主要體現(xiàn)在封裝性(Encapsulation)、繼續(xù)性(Inheritance)和多態(tài)性(Polymorphism)。封裝性把數(shù)據(jù)與操作數(shù)據(jù)的函數(shù)組織在一起,不僅使程序結(jié)構(gòu)更加緊湊,并且提高了類內(nèi)部數(shù)據(jù)的安全性;繼續(xù)性增加了軟件的可擴(kuò)充性及代碼重用性;多態(tài)性使設(shè)計(jì)人員在設(shè)計(jì)程序時(shí)可以對(duì)問題進(jìn)行更好的抽象,有利于代碼的維護(hù)和可重用。Visual C++不僅僅是一個(gè)編譯器,更是一個(gè)全面的應(yīng)用程序開發(fā)環(huán)境,讀者可以充分利用具有面向?qū)ο筇匦缘腃++語言開發(fā)出專業(yè)級(jí)的Windows應(yīng)用程序。熟練把握本章的內(nèi)容,將為后續(xù)章節(jié)的學(xué)習(xí)打下良好的基礎(chǔ)。

  從結(jié)構(gòu)到類

  在C語言中,我們可以定義結(jié)構(gòu)體類型,將多個(gè)相關(guān)的變量包裝為一個(gè)整體使用。在結(jié)構(gòu)體中的變量,可以是相同、部分相同,或完全不同的數(shù)據(jù)類型。在C語言中,結(jié)構(gòu)體不能包含函數(shù)。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象具有狀態(tài)(屬性)和行為,狀態(tài)保存在成員變量中,行為通過成員方法(函數(shù))來實(shí)現(xiàn)。C語言中的結(jié)構(gòu)體只能描述一個(gè)對(duì)象的狀態(tài),不能描述一個(gè)對(duì)象的行為。在C++中,對(duì)結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C++的結(jié)構(gòu)體可以包含函數(shù)。

  1、結(jié)構(gòu)體的定義

  下面我們看看如例1所示的程序(EX01.CPP)。

  例1

#include
strUCt point
{
 int x;
 int y;
};

void main()
{
 point pt;
 pt.x=0;
 pt.y=0;
 cout<<PT.X<<ENDL<<PT.Y<<ENDL;
}
  在這段程序中,我們定義了一個(gè)結(jié)構(gòu)體point,在這個(gè)結(jié)構(gòu)體當(dāng)中,定義了兩個(gè)整型的變量,作為一個(gè)點(diǎn)的X坐標(biāo)和Y坐標(biāo)。在main函數(shù)中,定義了一個(gè)結(jié)構(gòu)體的變量pt,對(duì)pt的兩個(gè)成員變量進(jìn)行賦值,然后調(diào)用C++的輸出流類的對(duì)象cout將這個(gè)點(diǎn)的坐標(biāo)輸出。

  在C++中預(yù)定義了三個(gè)標(biāo)準(zhǔn)輸入輸出流對(duì)象:cin(標(biāo)準(zhǔn)輸入)、cout(標(biāo)準(zhǔn)輸出)和cerr(標(biāo)準(zhǔn)錯(cuò)誤輸出)。cin與輸入操作符(>>)一起用于從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),cout與輸出操作符(<<)一起用于輸出數(shù)據(jù)到標(biāo)準(zhǔn)輸出上,cerr與輸出操作符(<<)一起用于輸出錯(cuò)誤信息到標(biāo)準(zhǔn)錯(cuò)誤上(一般同標(biāo)準(zhǔn)輸出)。默認(rèn)的標(biāo)準(zhǔn)輸入通常為鍵盤,默認(rèn)的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出通常為顯示器。

  cin和cout的使用比C語言中的scanf和PRintf要簡(jiǎn)單得多。使用cin和cout你不需要去考慮輸入和輸出的數(shù)據(jù)的類型,cin和cout可以自動(dòng)根據(jù)數(shù)據(jù)的類型調(diào)整輸入輸出的格式。

  對(duì)于輸出來說,按照例1中所示的方式調(diào)用就可以了,對(duì)于輸入來說,我們以如下方式調(diào)用即可:

int i;
cin>>i;
  注重:在使用cin和cout對(duì)象時(shí),要注重箭頭的方向。在輸出中我們還使用了endl(end of line),表示換行,注重最后一個(gè)是字母‘l’,而不是數(shù)字1。endl相當(dāng)于C語言的'/n',endl在輸出流中插入一個(gè)換行,并刷新輸出緩沖區(qū)。

  因?yàn)橛玫搅薈++的標(biāo)準(zhǔn)輸入輸出流,所以我們需要包含iostream.h這個(gè)頭文件,就像我們?cè)贑語言中用到了printf和scanf函數(shù)時(shí),要包含C的標(biāo)準(zhǔn)輸入輸出頭文件stdio.h。

  提示:在定義結(jié)構(gòu)體時(shí),一定不要忘了在右花括號(hào)處加上一個(gè)分號(hào)(;)。

  我們將結(jié)構(gòu)體point的定義修改一下,結(jié)果如例2所示:

  例2

struct point
{
 int x;
 int y;
 void output()
 {
  cout<<X<<ENDL<<Y<<ENDL;
 }
};
  在point這個(gè)結(jié)構(gòu)體中加入了一個(gè)函數(shù)output。我們知道在C語言中,結(jié)構(gòu)體中是不能有函數(shù)的,然而在C++中,結(jié)構(gòu)體中是可以有函數(shù)的,稱為成員函數(shù)。這樣,在main函數(shù)中就可以以如下方式調(diào)用:

void main()
{
 point pt;
 pt.x=0;
 pt.y=0;
 // cout<<PT.X<<ENDL<<PT.Y<<ENDL;
 pt.output();
}
  注重:在C++中,//......用于注釋一行,/*......*/用于注釋多行。

  2、結(jié)構(gòu)體與類

  將上面例2所示的point結(jié)構(gòu)體定義中的要害字struct換成class,得到如例3所示的定義。

  例3

class point
{
 int x;
 int y;

 void output()
 {
  cout<<X<<ENDL<<Y<<ENDL;
 }
};
  這就是C++中的類的定義,看起來是不是和結(jié)構(gòu)體的定義很類似?在C++語言中,結(jié)構(gòu)體是用要害字struct聲明的類。類和結(jié)構(gòu)體的定義除了使用要害字“class”和“struct”不同之外,更重要的是在成員的訪問控制方面有所差異。結(jié)構(gòu)體默認(rèn)情況下,其成員是公有(public)的;類默認(rèn)情況下,其成員是私有(private)的。在一個(gè)類當(dāng)中,公有成員是可以在類的外部進(jìn)行訪問的,而私有成員就只能在類的內(nèi)部進(jìn)行訪問了。例如,現(xiàn)在設(shè)計(jì)家庭這樣一個(gè)類,對(duì)于家庭的客廳,可以讓家庭成員以外的人訪問,我們就可以將客廳設(shè)置為public。對(duì)于臥室,只有家庭成員才能訪問,我們可以將其設(shè)置為private。

  提示:在定義類時(shí),同樣不要忘了在右花括號(hào)處加上一個(gè)分號(hào)(;)。

  假如我們編譯例4所示的程序(EX02.CPP):

  例4


#include
class point
{
 int x;
 int y;

 void output()
 {
  cout<<X<<ENDL<<Y<<ENDL;
 }
};

void main()
{
 point pt;
 pt.x=0;
 pt.y=0;
 pt.output();
}
  將會(huì)出現(xiàn)如圖1所示的錯(cuò)誤提示信息,提示我們不能訪問類中私有(private)的成員變量和成員函數(shù)。

  C++語言學(xué)習(xí)之從結(jié)構(gòu)到類
  圖1 在類的外部訪問類中私有成員變量提示出錯(cuò)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤城市| 寿光市| 五大连池市| 方山县| 公安县| 同德县| 凤庆县| 安达市| 盘山县| 象山县| 平乐县| 随州市| 荣昌县| 汝阳县| 休宁县| 云霄县| 庆安县| 和田县| 沈丘县| 徐汇区| 临泽县| 社旗县| 安平县| 丹阳市| 山东省| 那坡县| 轮台县| 阿克苏市| 离岛区| 鸡西市| 长沙市| 万盛区| 清流县| 分宜县| 星子县| 湾仔区| 漠河县| 浮梁县| 鄢陵县| 六盘水市| 资中县|