標籤:bsp please err http 語句 ios ble ++ png
c++接觸的很少,之前也只是會編寫一個簡單的cpp檔案,但一個工程的實現,往往不僅包括源檔案(.cpp尾碼檔案)一般還有標頭檔(.h尾碼檔案)等。一個c++工程中只能有一個main函數,這個函數所在的檔案類似於前端中的入口檔案,即從main函數開始執行整個工程。即有多個cpp檔案,這些檔案中也只有一個入口檔案。
基本概念之標頭檔
標頭檔就是.h尾碼結尾的檔案。 如下所示,是一個標頭檔:
#ifndef __OUTFILE_FRAMEDATA_H__#define __OUTFILE_FRAMEDATA_H__#include "outfile.h"class Outfile_framedata : public Outfile{private: FILE *pFile; int frameCount; int num_of_dots; int recordlength; void FWriteInt(FILE* fp, int val); void FWriteFloat(FILE* fp, double val); void FWriteString(FILE* fp,const char* str);public: Outfile_framedata(const char* file, int Nx, int Ny); ~Outfile_framedata(void); void writeFrame(double **matrix, int Nx, int Ny);};#endif
從這個檔案中我們可以看出標頭檔的一些特點:
- 定義了類,包括類的變數和方法,但是方法只是聲明,具體語句沒有寫。
標頭檔必須要有下面的幾個語句。 且一般要求後面的檔案前後有__來作為補充,另外要求英文字母全部大寫,比如這個例子中這個.h檔案名稱為outfile_framedata.h。
- #ifndef 即if not define的縮寫,意思是如果沒有定義。
- #define 那麼就定義。
- #endif 結束if
- 而上面三個必要語句的作用就是可能會有多個cpp檔案使用這個標頭檔(標頭檔也有可複用的作用),如果這個標頭檔沒有被編譯,就會進行編譯,否則,就不需要再編譯了,起了防止重複編譯的作用。
基本概念之源檔案
源檔案是工程中最重要的部分。 一般源檔案的開頭會引用標頭檔,如使用#include的方式進行引用 。
c++工程
如上,我們建立了一個project工程(使用visual studio 2013)。 通過源檔案上右鍵,就可以添加源檔案,其他類似。
如下所示,這是我們建立的檔案。
circle.h原始碼如下所示:
#ifndef __CIRCLE_H__#define __CIRCLE_H__class Circle{private: double r; // 半徑public: Circle(); // 建構函式 Circle(double R); // 建構函式 double Area(); // 求面積函數};#endif
這個檔案中就是定義了Circle這個類以及類中的私人變數和一些函數,而函數具體的語句是不需要寫的。
circle.cpp檔案如下所示:
#include <iostream>#include "circle.h"Circle::Circle(){ this->r = 5;}Circle::Circle(double R){ this->r = R;}double Circle::Area(){ return 3.14 * r * r;}
這個檔案當中,我們將circle.h中未定義的函數進行了定義包括兩個建構函式以及一個計算圓面積的函數。注意檔案頭要引入circle.h檔案。
注意:建構函式的作用是為了初始化工作,而解構函式是為了釋放記憶體空間。一般,一個類可以有多個建構函式,但卻只能有一個解構函式。如果類中沒有自訂的解構函式,就會調用預設的解構函式完成清理工作,釋放堆中分配的記憶體。
main.cpp檔案如下:
#include <iostream>#include "circle.h"using namespace std;void test(double a);int main(){ double a = 1.0; cout << "Please input the circle raduis: " << endl; cin >> a; test(a); Circle c(a); cout << "the area of the circle is : " << c.Area() << endl; return 0;}void test(double a){ try { if (a < 0) { throw 0; } } catch (int) { cerr << "the number " << a << " is not fit for this!" << endl; exit(1); }}
這個檔案中,我們同樣需要引入標頭檔 circle.h, 而不需要引入 circle.cpp,這個工程的入口檔案就是main.cpp。 注意: 檔案中 test是用於處理c++程式異常的。
ctrl + F5可以執行整個工程,最終執行效果如下所示:
ok,這就是一個最為基本的c++工程了。
開啟工程檔案
選擇 檔案 - 開啟 - 項目/解決方案,然後找到對應檔案的 vcxproj 尾碼檔案即可在 visual studio 中開啟此工程。然後ctrl + F5即可運行。
編寫一個c++工程