首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹 - 團(tuán)購(gòu) - 書城 - 模考 - 學(xué)習(xí)通 - 導(dǎo)航 - 510 -
首頁考試吧網(wǎng)校萬題庫直播雄鷹510團(tuán)購(gòu)書城?論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級(jí)
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托?荚
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級(jí)
零起點(diǎn)德語
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營(yíng)養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國(guó)際商務(wù)
心理咨詢
營(yíng) 銷 師
司法考試
國(guó)際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問
ACCA考試
初級(jí)會(huì)計(jì)職稱
資產(chǎn)評(píng)估師
高級(jí)經(jīng)濟(jì)師
注冊(cè)會(huì)計(jì)師
高級(jí)會(huì)計(jì)師
美國(guó)注冊(cè)會(huì)計(jì)師
審計(jì)師考試
國(guó)際內(nèi)審師
注冊(cè)稅務(wù)師
理財(cái)規(guī)劃師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊(cè)測(cè)繪師
質(zhì)量工程師
巖土工程師
注冊(cè)給排水
造價(jià)員考試
注冊(cè)計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請(qǐng)
英語學(xué)習(xí)
思想?yún)R報(bào)
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂

2015年國(guó)家計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)資料(6)

考試吧整理了“2015年國(guó)家計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)資料”,提供給各位考生備考,更多考試資料請(qǐng)持續(xù)關(guān)注考試吧計(jì)算機(jī)等級(jí)考試頻道!

  點(diǎn)擊查看:2015年國(guó)家計(jì)算機(jī)二級(jí)C 考試復(fù)習(xí)資料匯總

  二級(jí)C++輔導(dǎo)筆記:類對(duì)象數(shù)組和靜態(tài)成員

  一、類對(duì)象數(shù)組

  類的對(duì)象和C++其他數(shù)據(jù)類型一樣,也可以為其建立數(shù)組,數(shù)組的表示方法和結(jié)構(gòu)一樣。

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  public:

  Date(int m=0,int d=0, int y=0) { mo=m; da=d; yr=y;}

  void display() const { cout < };

  int main()

  {

  Date dates[2];

  Date today(12,31,2003);

  dates[0]=today;

  dates[0].display();

  dates[1].display();

  return 0;

  }

  1.類對(duì)象數(shù)組和默認(rèn)構(gòu)造函數(shù)

  在前面已經(jīng)說過,不帶參數(shù)或者所有參數(shù)都有默認(rèn)值的構(gòu)造函數(shù)叫做默認(rèn)構(gòu)造函數(shù)。如果類中沒有構(gòu)造函數(shù),編譯器會(huì)自動(dòng)提供一個(gè)什么都不做的公共默認(rèn)構(gòu)造函數(shù) 。如果類當(dāng)中至少有一個(gè)構(gòu)造函數(shù),編譯器就不會(huì)提供默認(rèn)構(gòu)造函數(shù)。

  如果類當(dāng)中不含默認(rèn)構(gòu)造函數(shù),則無法實(shí)例化其對(duì)象數(shù)組。因?yàn)閷?shí)例花類對(duì)象數(shù)組的格式不允許用初始化值來匹配某個(gè)構(gòu)造函數(shù)的參數(shù)表。

  上面的程序中,main()函數(shù)聲明了一個(gè)長(zhǎng)度為2的Date對(duì)象數(shù)組,還有一個(gè)包含初始化值的單個(gè)Date對(duì)象。接著把這個(gè)初始化的Date對(duì)象賦值給數(shù)組中第一個(gè)對(duì)象,然后顯示兩個(gè)數(shù)組元素中包含的日期。從輸出中可以看到,第一個(gè)日期是有效日期,而第二個(gè)顯示的都是0。

  當(dāng)聲明了某個(gè)類的對(duì)象數(shù)組時(shí),編譯器會(huì)為每個(gè)元素都調(diào)用默認(rèn)構(gòu)造函數(shù)。

  下面的程序去掉了構(gòu)造函數(shù)的默認(rèn)參數(shù)值,并且增加了一個(gè)默認(rèn)構(gòu)造函數(shù)。

  #include

  class Date

  {

  int mo, da, yr;

  public:

  Date();

  Date(int m,int d,int y) { mo=m; da=d; yr=y;}

  void display() const { cout < };

  Date::Date()

  {

  cout < mo=0; da=0; yr=0;

  }

  int main()

  {

  Date dates[2];

  Date today(12,31,2003);

  dates[0]=today;

  dates[0].display();

  dates[1].display();

  return 0;

  }

  運(yùn)行程序,輸出為:

  Date constructor running

  Date constructor running

  12/31/2003

  0/0/0

  從輸出中可以看出,Date()這個(gè)默認(rèn)構(gòu)造函數(shù)被調(diào)用了兩次。

  2.類對(duì)象數(shù)組和析構(gòu)函數(shù)

  當(dāng)類對(duì)象離開作用域時(shí),編譯器會(huì)為每個(gè)對(duì)象數(shù)組元素調(diào)用析構(gòu)函數(shù)。

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  public:

  Date(int m=0,int d=0,int y=0) { mo=m; da=d; yr=y;}

  ~Date() {cout < void display() const {cout< };

  int main()

  {

  Date dates[2];

  Date today(12,31,2003);

  dates[0]=today;

  dates[0].display();

  dates[1].display();

  return 0;

  }

  運(yùn)行程序,輸出為:

  12/31/2003

  0/0/0

  Date destructor running

  Date destructor running

  Date destructor running

  表明析構(gòu)函數(shù)被調(diào)用了三次,也就是dates[0],dates[1],today這三個(gè)對(duì)象離開作用域時(shí)調(diào)用的。

  二、靜態(tài)成員

  可以把類的成員聲明為靜態(tài)的。靜態(tài)成員只能存在唯一的實(shí)例。所有的成員函數(shù)都可以訪問這個(gè)靜態(tài)成員。即使沒有聲明類的任何實(shí)例,靜態(tài)成員也已經(jīng)是存在的。不過類當(dāng)中聲明靜態(tài)成員時(shí)并不能自動(dòng)定義這個(gè)變量,必須在類定義之外來定義該成員。

  1.靜態(tài)數(shù)據(jù)成員

  靜態(tài)數(shù)據(jù)成員相當(dāng)于一個(gè)全局變量,類的所有實(shí)例都可以使用它。成員函數(shù)能訪問并且修改這個(gè)值。如果這個(gè)靜態(tài)成員是公有的,那么類的作用域之內(nèi)的所有代碼(不論是在類的內(nèi)部還是外部)都可以訪問這個(gè)成員。下面的程序通過靜態(tài)數(shù)據(jù)成員來記錄鏈表首項(xiàng)和末項(xiàng)的地址。

  #include iostream.h

  #include string.h

  class ListEntry

  {

  public:

  static ListEntry* firstentry;

  private:

  static ListEntry* lastentry;

  char* listvalue;

  ListEntry* nextentry;

  public:

  ListEntry(char*);

  ~ListEntry() { delete [] listvalue;}

  ListEntry* NextEntry() const { return nextentry; };

  void display() const { cout < };

  ListEntry* ListEntry::firstentry;

  ListEntry* ListEntry::lastentry;

  ListEntry::ListEntry(char* s)

  {

  if(firstentry==0) firstentry=this;

  if(lastentry!=0) lastentry- >nextentry=this;

  lastentry=this;

  listvalue=new char[strlen(s)+1];

  strcpy(listvalue,s);

  nextentry=0;

  }

  int main()

  {

  while (1)

  {

  cout <<\nEnter a name ('end' when done): ;

  char name[25];

  cin >>name;

  if(strncmp(name,end,3)==0) break;

  new ListEntry(name);

  }

  ListEntry* next = ListEntry::firstentry;

  while (next != 0)

  {

  next- >display();

  ListEntry* hold = next;

  next=next- >NextEntry();

  delete hold;

  }

  return 0;

  }

  程序首先顯示提示信息,輸入一串姓名,以end作為結(jié)束標(biāo)志。然后按照輸入順序來顯示姓名。構(gòu)造函數(shù)將表項(xiàng)加入鏈表,用new運(yùn)算符來聲明一個(gè)表項(xiàng),但并沒有把new運(yùn)算符返回的地址賦值給某個(gè)指針,這是因?yàn)闃?gòu)造函數(shù)會(huì)把該表項(xiàng)的地址賦值給前一個(gè)表項(xiàng)的nextentry指針。

  這個(gè)程序和前面將的逆序輸出的程序都不是最佳方法,最好的方法是使用類模板,這在后面再介紹。

  main()函數(shù)取得ListEntry::firstentry的值,開始遍歷鏈表,因此必需把ListEntry::firstentry設(shè)置成公有數(shù)據(jù)成員,這不符合面向?qū)ο蟪绦虻募s定,因?yàn)檫@里數(shù)據(jù)成員是公有的。

  2.靜態(tài)成員函數(shù)

  成員函數(shù)也可以是靜態(tài)的。如果一個(gè)靜態(tài)成員函數(shù)不需要訪問類的任何實(shí)例的成員,可以使用類名或者對(duì)象名來調(diào)用它。靜態(tài)成員通常用在只需要訪問靜態(tài)數(shù)據(jù)成員的情況下。

  靜態(tài)成員函數(shù)沒有this指針,因?yàn)樗荒茉L問非靜態(tài)成員,所以它們不能把this指針指向任何東西。

  下面的程序中,ListEntry類中加入了一個(gè)靜態(tài)成員函數(shù)FirstEntry(),它從數(shù)據(jù)成員firstentry獲得鏈表第一項(xiàng)的地址,在這兒,firstentry已經(jīng)聲明為私有數(shù)據(jù)成員了。

  #include iostream.h

  #include string.h

  class ListEntry

  {

  static ListEntry* firstentry;

  static ListEntry* lastentry;

  char* listvalue;

  ListEntry* nextentry;

  public:

  ListEntry(char*);

  ~ListEntry() { delete [] listvalue;}

  static ListEntry* FirstEntry() { return firstentry; }

  ListEntry* NextEntry() const { return nextentry; };

  void display() const { cout < };

  ListEntry* ListEntry::firstentry;

  ListEntry* ListEntry::lastentry;

  ListEntry::ListEntry(char* s)

  {

  if(firstentry==0) firstentry=this;

  if(lastentry!=0) lastentry- >nextentry=this;

  lastentry=this;

  listvalue=new char[strlen(s)+1];

  strcpy(listvalue, s);

  nextentry = 0;

  }

  int main()

  {

  while (1)

  {

  cout <<\nEnter a name ('end' when done):;

  char name[25];

  cin >> name;

  if(strncmp(name,end,3)==0) break;

  new ListEntry(name);

  }

  ListEntry* next = ListEntry::FirstEntry();

  while (next != 0)

  {

  next- >display();

  ListEntry* hold = next;

  next = next- >NextEntry();

  delete hold;

  }

  return 0;

  }

  函數(shù)ListEntry::FirstEntry()是靜態(tài)的,返回靜態(tài)數(shù)據(jù)成員firstentry的值。

  3.公有靜態(tài)成員

  如果一個(gè)靜態(tài)成員象上面程序一樣是公有的,那么在整個(gè)程序中都可以訪問它?梢栽谌魏蔚胤秸{(diào)用公有景泰成員函數(shù),而且不需要有類的實(shí)例存在。但公有靜態(tài)成員函數(shù)不完全是全局的,它不僅僅存在于定義類的作用域內(nèi)。在這個(gè)作用域里面,只要在函數(shù)名前加上類名和域解析運(yùn)算符::就可以調(diào)用該函數(shù)。

  相關(guān)推薦:

  各地2015年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間匯總

  各地2015年上半年計(jì)算機(jī)等級(jí)考試費(fèi)用匯總

  2015年計(jì)算機(jī)二級(jí)C++模擬練習(xí)題及答案匯總

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
Copyright © 2004- 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) All Rights Reserved 
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699