【C++ 觀念理解 #4】C++ include file 邏輯, 在子檔案已經被 include 的檔案,還需要再重新被 include 嗎?(對比 Python import)

前言

這一篇文章我們要來討論一個小東西,
因為我是從 Python 過來的,在 Python 裡面如果沒有經過特別設計,
我們通常在一個新的檔案都要重新 import package。

但這個邏輯,在 C++ 似乎不是這個樣子…

Python 範例

我們直接來看例子吧!
注意下面的 file1.py ,我們必須要重新 import os,程式才能夠正常的執行

# file1.py
import file2
os.system("pwd") # NameError: name 'os' is not defined,  need import os
# file2.py
import os

C++ 範例

一樣的,我們直接來看例子吧!

但 C++… 似乎不是這樣
注意下面的 file1.cpp ,我們「不必」重新 incluide ,而且甚至也不用重寫一次「using namespace std」
程式都能夠正常的執行!!!

// file1.cpp
#include "file2.cpp"

int main(){
    cout << "file1 with no include iostream and using namespace std." << endl;
    return 0;
}
// file2.cpp
#include <iostream>

using namespace std;

就是這一點,讓剛剛從 Python 回來 C++ 的我,非常的不習慣XDD
雖然自己在撰寫 C++ 程式的時候,重複的 include 並不會影響程式運行
但一方面是 trace code 的時候沒辦法直接從同一份檔案找到 library 有些不習慣 (有時候要找 class 定義)
另外就是自己在寫 C++ 程式的時候,也要讓自己盡量去配合這個習慣,不然寫出來的程式,感覺會很囉唆許多?

Reference