###### tags: `sprout`
# header files
slide: https://hackmd.io/@i2y3z9dITSa_Q_7V7h-AoA/H1olBYIO8
--廖凰汝--
---
```cpp=
#include <iostream>
int main() {
std::cout<<"123";
}
```
How does compiler know std::cout ?
----
> iostream is a standard library <font color="#f37">header files</font>
當我們#include <iostream> 就等於把它的內容安插在include 的地方,使用std::cout時並不需要自己宣告與實作。
----
```cpp=
#include <iostream>
int add(int x, int y);
int main() {
std::cout << add(3, 4) << '\n';
}
int add(int x, int y) {
return x + y;
}
```
----
如果我們要在很多個檔案裡面使用add function?
> 每次都要宣告,實作 超麻煩
或者要更新add的內容?
> 一次要改超多地方!
----
add.h:
```cpp=
int add(int x, int y);
```
main.cpp:
```cpp=
#include <iostream>
#include "add.h" // 把add.h的內容插在這裡
int main()
{
std::cout << add(3, 4) << '\n';
return 0;
}
```
add.cpp:
```cpp=
int add(int x, int y) {
return x + y;
}
```
----

----
我們在main裡面使用add的時候,並不需要知道add背後怎麼被宣告與實做出來的。
像是一個自動販賣機,我們只需要按按鈕,付錢就可以得到飲料。不需要知道裡面怎麼運作。
----
header files 通常包含 function, object 的宣告
但不會包含定義(實作方法)。
----
demo
{"metaMigratedAt":"2023-06-15T06:46:21.550Z","metaMigratedFrom":"Content","title":"header files","breaks":true,"contributors":"[{\"id\":\"8b6cb7cf-d748-4d26-bf43-fed5ee1f80a0\",\"add\":1279,\"del\":204}]"}