• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++中頭文件(.h)和源文件(.cpp)都應(yīng)該寫些什么

            這個(gè)問題在許多C++程序員看來(lái)會(huì)很搞笑,“這么簡(jiǎn)單的問題還用得著你廢話!”。但是由于本人生性愚鈍,學(xué)C++的時(shí)候,確實(shí)花了很久的時(shí)間都搞不明白,只是會(huì)寫一個(gè)文件,但不會(huì)寫一個(gè)工程。而用C++編寫比較大型的項(xiàng)目時(shí),文件的分割管理確實(shí)確實(shí)是非常必要的 。下面就非常簡(jiǎn)潔明了地談?wù)勵(lì)^文件(.h)和源文件(.cpp)應(yīng)該怎么寫。

               頭文件(.h):
                寫類的聲明(包括類里面的成員和方法的聲明)、函數(shù)原型、#define常數(shù)等,但一般來(lái)說不寫出具體的實(shí)現(xiàn)。

                在寫頭文件時(shí)需要注意,在開頭和結(jié)尾處必須按照如下樣式加上預(yù)編譯語(yǔ)句(如下):

            #ifndef CIRCLE_H
            #define CIRCLE_H

            //你的代碼寫在這里

            #endif
                這樣做是為了防止重復(fù)編譯,不這樣做就有可能出錯(cuò)。

                至于CIRCLE_H這個(gè)名字實(shí)際上是無(wú)所謂的,你叫什么都行,只要符合規(guī)范都行。原則上來(lái)說,非常建議把它寫成這種形式,因?yàn)楸容^容易和頭文件的名字對(duì)應(yīng)。

               源文件(.cpp):

                源文件主要寫實(shí)現(xiàn)頭文件中已經(jīng)聲明的那些函數(shù)的具體代碼。需要注意的是,開頭必須#include一下實(shí)現(xiàn)的頭文件,以及要用到的頭文件。那么當(dāng)你需要用到自己寫的頭文件中的類時(shí),只需要#include進(jìn)來(lái)就行了。

                下面舉個(gè)最簡(jiǎn)單的例子來(lái)描述一下,咱就求個(gè)圓面積。

                 第1步,建立一個(gè)空工程(以在VS2003環(huán)境下為例)。

                 第2步,在頭文件的文件夾里新建一個(gè)名為Circle.h的頭文件,它的內(nèi)容如下:

            #ifndef CIRCLE_H
            #define CIRCLE_H

            class Circle
            ...{
            private:
                double r;//半徑
            public:
                Circle();//構(gòu)造函數(shù)
                Circle(double R);//構(gòu)造函數(shù)
                double Area();//求面積函數(shù)
            };

            #endif
               注意到開頭結(jié)尾的預(yù)編譯語(yǔ)句。在頭文件里,并不寫出函數(shù)的具體實(shí)現(xiàn)。

                第3步,要給出Circle類的具體實(shí)現(xiàn),因此,在源文件夾里新建一個(gè)Circle.cpp的文件,它的內(nèi)容如下:

            #include "Circle.h"

            Circle::Circle()
            ...{
                this->r=5.0;
            }

            Circle::Circle(double R)
            ...{
                this->r=R;
            }

            double Circle:: Area()
            ...{
                return 3.14*r*r;
            }
                需要注意的是:開頭處包含了Circle.h,事實(shí)上,只要此cpp文件用到的文件,都要包含進(jìn)來(lái)!這個(gè)文件的名字其實(shí)不一定要叫Circle.cpp,但非常建議cpp文件與頭文件相對(duì)應(yīng)。

                最后,我們建一個(gè)main.cpp來(lái)測(cè)試我們寫的Circle類,它的內(nèi)容如下:

            #include <iostream>
            #include "Circle.h"
            using namespace std;

            int main()
            ...{
                Circle c(3);
                cout<<"Area="<<c.Area()<<endl;
                return 1;
            }
                注意到開頭時(shí)有#include "Circle.h"的聲明,證明我們使用到了我們剛才寫的Circle類。

               至此,我們工程的結(jié)構(gòu)為:

             

                運(yùn)行一下,輸出結(jié)果為:

             

               說明我們寫的Circle類確實(shí)可以用了。

            posted on 2010-05-28 10:34 lhking 閱讀(25000) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: C++中頭文件(.h)和源文件(.cpp)都應(yīng)該寫些什么 2012-02-15 14:08 orchard

            不錯(cuò),很基礎(chǔ),轉(zhuǎn)載呃,多謝分享  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2010年6月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            国产精品久久久久乳精品爆| 囯产极品美女高潮无套久久久| 久久国产亚洲精品无码| 午夜精品久久久久久99热| 久久久一本精品99久久精品66| 久久国产精品久久久| 国产日韩久久免费影院| 香蕉久久av一区二区三区| 精品国产综合区久久久久久| 久久久久久久久久久久久久| 久久精品国产69国产精品亚洲| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 国产激情久久久久久熟女老人| 无码日韩人妻精品久久蜜桃 | 久久人妻少妇嫩草AV无码蜜桃| 日韩欧美亚洲综合久久影院Ds | 久久久久婷婷| 久久影院综合精品| 国产精品狼人久久久久影院| 久久久久久精品无码人妻| 久久精品国产秦先生| 久久这里有精品| 久久99精品国产| 久久一日本道色综合久久| 亚洲一级Av无码毛片久久精品| 久久精品国产亚洲AV无码麻豆| 欧美日韩中文字幕久久久不卡| 成人久久久观看免费毛片| 一本久久a久久精品vr综合| 精品人妻伦一二三区久久| 久久国产亚洲高清观看| 亚洲伊人久久成综合人影院| 国产精品女同一区二区久久| 无码伊人66久久大杳蕉网站谷歌| 一本色道久久88综合日韩精品| 中文字幕成人精品久久不卡| 久久精品aⅴ无码中文字字幕重口| 欧美日韩精品久久久久| 性做久久久久久久久浪潮| 久久午夜无码鲁丝片午夜精品| 国产福利电影一区二区三区,免费久久久久久久精 |