預處理指令
C++中要把.h或者.cpp文件翻譯成可執行文件主要經過
預處理——編譯——鏈接
預處理主要是檢測文件的可執行性;
預處理指令以**#**開始
命名空間是C++語言的新特徵
命名空間是類、函數、對象、類型等名字的聲明集合
std;是C++語言的標準命名空間,包含了標準頭文件中各種名字的聲明;
標準頭文件:iostrenm cstring iomanip
其中namespace 是C++的關鍵字,用於說明,命名空間。聲明之後,程序可以使用iostream中的全部組件(例如cin、cout)
如果不用using聲明名空間,則需要在使用時指定組件的名空間
#include<iostream>
using std::cin;
using std::cout; //指定使用std的cout元素
int main(){
int a,b;
cin>>a;
cin>>b;
cout<<"a+b"<<a+b<<'\n';
}
方發二
#include<iostream>
int main(){
int a,b;
std::cin>>a; //聲明使用std中的cin
std::cin>>b;
std::cout<<"a+b"<<a+b<<'\n';
}
易錯點
假如是我們自己聲明的頭文件//lib.h
Dream是lib中聲明的一類類
#include"lib.h"
int main(){
lib::Dream;
}
這就是錯誤因爲lib 是操作系統能識別的文件名,不是C++編譯器能識別的“名字”。
所以有了namespace 和using 機制
在lib定義類時加入namespace lib;再用::即可,因爲此時lib不再是頭文件名而是命名空間名
使用命名空間
用using可以指定使用命名空間using兩種形式
一、using namespace 名空間;
二、using 名空間::元素
#include<instream>
using namespace std;
namespace A //這裏的A就相當於上文中的lib
{ void f()
{cout<<"f():from A:"<<endl;}
namespace B;
{void f()
{cout<<"f():from B"<<endl;}
}
int main(){
using namespace A; //使用名空間
f(); //調用A:f()
B::f(); //調用A;B:f()
}