99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

C++ 頭文件

2023-03-20 16:22 更新

在結(jié)構(gòu)體定義中聲明函數(shù),稍后再定義函數(shù),這看起來是一件麻煩事。任何時(shí)候你要改變一個(gè)函數(shù)的接口,都需要在兩個(gè)地方做修改,即使只是做了很小的變動(dòng),比如把一個(gè)參數(shù)聲明為const。

盡管如此,這種麻煩是有理由的,我們能夠把結(jié)構(gòu)體定義和函數(shù)分離到兩個(gè)文件中:頭文件包含著結(jié)構(gòu)體定義,而實(shí)現(xiàn)文件包含著函數(shù)。

頭文件通常和實(shí)現(xiàn)文件同名,但后綴是.h而不是.cpp。對于我們一直看的例子,頭文件名為Time.h,它包含以下內(nèi)容:

struct TIme {
    // 實(shí)例變量
   int hour, minute;
   double second; 

   //構(gòu)造函數(shù)
   Time (int hour, int min, double secs);
   Time (double secs);

  //修改器
   void increment (double secs);

  //函數(shù)
   void print () const;
   bool after (const Time& time2) const;
   Time add (const Time& t2) const;
   double convertToSeconds () const;
};

請注意,我們并不需要在結(jié)構(gòu)體定義中給每個(gè)函數(shù)名前面包含前綴Time::。編譯器知道我們聲明的函數(shù)是Time結(jié)構(gòu)體的成員。

Time.cpp包含了成員函數(shù)的定義(為節(jié)省篇幅,我已經(jīng)省去了函數(shù)體):

#include <iostream.h>
#include "Time.h"

Time::Time (int h, int m, double s)  ...

Time::Time (idouble secs)  ...

void Time::increment ( double secs)  ...

bool Time::after (const Time& time2) const ...

Time Time::add (const Time& t2) const ...

double Time::convertToSeconds () const ...

在本例中,Time.cpp中的定義與Time.h中聲明的順序相同,這并非必要。

另一方面,有必要使用include語句將頭文件包含進(jìn)來。這樣一來,當(dāng)編譯器讀取函數(shù)定義時(shí),它能足夠了解結(jié)構(gòu)體,便于檢查代碼并捕獲錯(cuò)誤。

最后,main.cpp包含了函數(shù)main,以及我們需要的非Time結(jié)構(gòu)體的成員的函數(shù)(本例中沒有):

#include <iostream.h>
#include "Time.h"

void main() 
{
  Time currentTime (9, 14, 30.0);
  currentTime.increment (500.0);
  currentTime.print ();

  Time breadTime (3, 35, 0.0);
  Time doneTime = currentTime.add (breadTime);
  doneTime.print ();

  if (doneTime.after (currentTime)) {
      cout << "The bread will be donw after it starts." <<endl;
  }
}

再一次,main.cpp必須包含頭文件。

把如此小的程序分成三部分的好處也許并不明顯。其實(shí),大部分優(yōu)點(diǎn)會(huì)在我們處理更大的程序時(shí)體現(xiàn)出來:

重用:當(dāng)你寫了個(gè)類似于Time的結(jié)構(gòu),你也許會(huì)發(fā)現(xiàn)它在多個(gè)程序中都有用。通過把Time的定義從main.cpp中分離出來,在其它程序中包含Time結(jié)構(gòu)會(huì)變得容易。

管理交互:隨著系統(tǒng)變大,組件之間的交互數(shù)量快速增加,變得難以管理。通過從使用它們的程序中分離出Time.cpp這樣的模塊,可以最小化這些交互。

獨(dú)立編譯:單獨(dú)的文件可以被獨(dú)立編譯,之后鏈接到一個(gè)程序中。其中的細(xì)節(jié)依賴于你的編程環(huán)境。隨著程序規(guī)模變大,獨(dú)立編譯能節(jié)省很多時(shí)間,由于你通常每次只需要編譯少數(shù)一些文件。

對于類似本書這樣的小程序來說,分割程序并沒有多大好處。但你最好知道這個(gè)特性,特別是它解釋了我們寫的第一個(gè)程序中出現(xiàn)的一個(gè)語句:

#include <iostream.h>

iostream.h是一個(gè)包含著cin和cout聲明以及操作它們的函數(shù)的頭文件,當(dāng)編譯程序時(shí),你需要該頭文件中的信息。

這些函數(shù)的實(shí)現(xiàn)存儲(chǔ)在一個(gè)庫中,有時(shí)候被稱為"標(biāo)準(zhǔn)庫",它能自動(dòng)鏈接到你的程序中。好處在于當(dāng)你編譯程序時(shí),你不需要每次都重新編譯庫。大多數(shù)情況下,庫不會(huì)改變,因此沒有理由重新編譯它。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號