從C到C 要注意的33件事(2)

2021-07-24 21:13:32 字數 2835 閱讀 9865

20 如果你不想用inline來宣告乙個方法,或者你指向在類的定義裡面包含最少的內容(或者你想用.hpp和.cpp來隔離源**和宣告),那麼你只需要在類定義裡面宣告一下方法,然後在該類下面實現它就可以了。

using namespace std;

#include class vector

show it is a prototype

};double vector::su***ce()

return s;

}int main ()

output

su***ce: 20

a header file 

vector.h

:

class vector

;

a source file 

vector.cpp

:

using namespace std;

#include "vector.h"

double vector::su***ce()

return s;

}and another source file 

main.cpp

:

using namespace std;

#include #include "vector.h"

int main ()

你可以用下面的命令來編譯

vector.cpp,可以生成對應的.o檔案

g++ -c vector.cpp

每次如果你修改main.cpp檔案,你可以把它編譯成乙個可執行檔案,我們可以起名為test:

g++ main.cpp vector.o -o test

然後我們可以執行這個可執行檔案

./test

這樣做有以下好處:

1.vector.cpp只需要編譯一次,在大型工程中這樣節約很多時間。

2.你可以把vector.h檔案和.o檔案給其他使用者,這樣他們可以使用你的.o,但是不能修改你的**

21 當乙個方法被乙個例項應用的時候,這個方法可以使用這個例項的變數,並且修改,或者運算。但是有些時候,我們還是需要知道例項的位址,那麼this這個關鍵字就派上用場了

using namespace std;

#include #include class vector

double module()

void set_length (double a = 1)

};int main ()

the module of vector c: 5.83095

the module of vector c: 2

the module of vector c: 1

22.在c++ 中我們也可以宣告乙個物件的陣列

using namespace std;

#include #include class vector

double module ()

};int main ()

; s[23] = t[2];

cout << t[0].module() << endl;

return 0;

}

output

6.40312

23.下面是乙個完整的類的例項

using namespace std;

#include #include class vector

;vector::vector (double a, double b)

vector vector::operator + (vector a)

vector vector::operator - (vector a)

vector vector::operator - ()

vector vector::operator * (double a)

double vector::module()

void vector::set_length (double a)

ostream& operator << (ostream& o, vector a)

int main ()

the module of vector c: 40.8167

the content of vector a: (3, 5)

the opposite of vector a: (-3, -5)

the content of vector b: (0.971275, 0.23796)

k contains: 1.41421

我們也可以定義乙個函式來讓兩個vector類相加,不論這個函式是否在類裡面。要注意,這不是乙個方法,就是乙個函式。

vector operator + (vector a, vector b)

24,如果變數在類裡面被定義為static,那麼它們會被所有的類的例項共享。

using namespace std;

#include class vector

~vector()

};int vector::count = 0;

int main ()

output

123

432

從C到C 要注意的33件事 1

11.你可能知道一些c語言中的經典控制語句,但是c 增加了一些新的,像exceptionusing namespace std include include int main catch int result cout b contains b endl cout endl another exa...

專案經理需要注意的四件事

color red 先前的題目 專案管理四要素 表述的可能不準確,改了一下。color 很多人在做專案經理的時候會陷入到一種錯誤的誤區,認為專案管理就是工作分解,任務分配,工作結果監督,編寫文件,召開會議,這樣的做法在傳統的工業化的專案中可能是最好的措施,但是在軟體行業卻不是這樣。軟體行業是強調人的...

從學生到遊戲開發者 我學到的五件事

三年前,我參加了乙個遊戲研發課程,在此之前我從來沒有學過程式設計。現在,我非常自豪地成為了 failbetter games 工作室的一名開發者。這期間的過程常常感覺一頭霧水,由於沒有基礎,所以大多數的時間都埋頭在知識的海洋裡,很少有時間停下來反思一些事情,寫這篇部落格就是很難得的一次。這裡,我希望...