程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 永遠不會被和諧的C++代碼簡單說明

永遠不會被和諧的C++代碼簡單說明

編輯:C++入門知識

Visual C++ 6.0就是微軟公司推出的C++代碼開發工具,是使用最廣的開發工具。本節介紹Visual C++ 6.0工具的開發環境和開發流程,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

後綴為.h的頭文件C++標准已經明確提出不支持了,早些的實現將標准庫功能定義在全局空間裡,聲明在帶.h後綴的頭文件裡,c++標准為了和C區別開,也為了正確使用命名空間,規定頭文件不使用後綴.h。

因此,當使用時,相當於在c中調用庫函數,使用的是全局命名空間,也就是早期的c++實現;當使用的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

  • 解讀C++單元測試種種錯誤方法說明
  • 如何更好更方便的進行C++test測試程序講
  • 列舉C++編譯器支持的編譯環境
  • 筆者帶您走進C++編程門說明
  • 淺析C++編譯器怎樣實現異常處理問題

一般一個C++代碼的老的帶“.h”擴展名的庫文件,比如iostream.h,在新標准後的標准庫中都有一個不帶“.h”擴展名的相對應,區別除了後者的好多改進之外,還有一點就是後者的東東都塞進了“std”名字空間中。   

問題在於C++要兼容C的標准庫,而C的標准庫裡碰巧也已經有一個名字叫做“string.h”的頭文件,包含一些常用的C字符串處理函數,比如樓主提到的strcmp。  
這個頭文件跟C++的string類半點關系也沒有,所以 並非 的“升級版本”,他們是毫無關系的兩個頭文件。

要達到樓主的目的,比如同時:

  1. void func(){  
  2.  
  3. using namespace alex;//using指令  
  4.  
  5. using chris::love;//uisng聲明  
  6.  
  7. love();//chirs::love();  
  8.  
  9. alex::love();//必須這麼使用  
  10.  

因為標准庫非常的龐大,所程序員在選擇的類的名稱或函數名時就很有可能和標准庫中的某個名字相同。所以為了避免這種情況所造成的名字沖突,就把標准庫中的一切都被放在名字空間std中。但這又會帶來了一個新問題。無數原有的C++代碼都依賴於使用了多年的偽標准庫中的功能,他們都是在全局空間下的。 

所以就有了等等這樣的頭文件,一個是為了兼容以前的C++代碼,一個是為了支持新的標准。 C++標准庫中所有的標志府都被定義在一個名字空間std中,iostream也是標准庫中的頭文件,你查看一下include目錄,會發現又兩個頭文件iostream.h和iostream,其中iostream.h是C++以前的庫,iostream是在名字空間std中的庫,所以當你包含頭文件並想使用頭文件中的標志符的時候有兩種方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved