• <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)都應該寫些什么

            這個問題在許多C++程序員看來會很搞笑,“這么簡單的問題還用得著你廢話!”。但是由于本人生性愚鈍,學C++的時候,確實花了很久的時間都搞不明白,只是會寫一個文件,但不會寫一個工程。而用C++編寫比較大型的項目時,文件的分割管理確實確實是非常必要的 。下面就非常簡潔明了地談談頭文件(.h)和源文件(.cpp)應該怎么寫。

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

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

            #ifndef CIRCLE_H
            #define CIRCLE_H

            //你的代碼寫在這里

            #endif
                這樣做是為了防止重復編譯,不這樣做就有可能出錯。

                至于CIRCLE_H這個名字實際上是無所謂的,你叫什么都行,只要符合規范都行。原則上來說,非常建議把它寫成這種形式,因為比較容易和頭文件的名字對應。

               源文件(.cpp):

                源文件主要寫實現頭文件中已經聲明的那些函數的具體代碼。需要注意的是,開頭必須#include一下實現的頭文件,以及要用到的頭文件。那么當你需要用到自己寫的頭文件中的類時,只需要#include進來就行了。

                下面舉個最簡單的例子來描述一下,咱就求個圓面積。

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

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

            #ifndef CIRCLE_H
            #define CIRCLE_H

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

            #endif
               注意到開頭結尾的預編譯語句。在頭文件里,并不寫出函數的具體實現。

                第3步,要給出Circle類的具體實現,因此,在源文件夾里新建一個Circle.cpp的文件,它的內容如下:

            #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,事實上,只要此cpp文件用到的文件,都要包含進來!這個文件的名字其實不一定要叫Circle.cpp,但非常建議cpp文件與頭文件相對應。

                最后,我們建一個main.cpp來測試我們寫的Circle類,它的內容如下:

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

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

               至此,我們工程的結構為:

             

                運行一下,輸出結果為:

             

               說明我們寫的Circle類確實可以用了。

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

            評論

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

            不錯,很基礎,轉載呃,多謝分享  回復  更多評論   

            導航

            <2014年3月>
            2324252627281
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            統計

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品国产VA久久久久久久冰| 国产精品一久久香蕉国产线看| 久久久久亚洲?V成人无码| 国产日韩久久久精品影院首页| 久久久久亚洲AV成人网| 狠狠色丁香婷婷久久综合五月| 99久久国产宗和精品1上映| 久久天天躁狠狠躁夜夜躁2O2O| 久久精品一区二区国产| 久久久久亚洲精品天堂久久久久久| 亚洲欧美久久久久9999| 久久本道伊人久久| 国产精品99久久久久久宅男小说| 久久精品国产久精国产思思| 久久人人爽人人精品视频| 久久亚洲AV成人无码电影| 久久国产视频网| 国内精品久久久久久野外| 亚洲婷婷国产精品电影人久久| 国产99精品久久| 亚洲中文字幕无码久久2017| 久久久久人妻精品一区三寸蜜桃| 久久久国产精品亚洲一区| 久久青青草原精品国产不卡| 久久电影网一区| 久久精品无码一区二区无码| 亚洲国产婷婷香蕉久久久久久| 久久免费精品视频| 久久99国内精品自在现线| 中文字幕无码精品亚洲资源网久久| 精品久久久久中文字幕一区| 99久久婷婷国产综合亚洲| 日韩人妻无码一区二区三区久久| 中文字幕无码av激情不卡久久| 天天爽天天爽天天片a久久网| 久久婷婷五月综合成人D啪| 三级韩国一区久久二区综合| 久久久久亚洲AV综合波多野结衣| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 囯产精品久久久久久久久蜜桃| 无码人妻久久一区二区三区蜜桃 |