不一般的C++多文件程序結構

在這裏插入圖片描述

預處理指令

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()
	}
	
發佈了15 篇原創文章 · 獲贊 18 · 訪問量 8228
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章