1. 程式人生 > >大多數命名衝突發生情況

大多數命名衝突發生情況

檔案.cpp,b.cpp,和將所有編譯main.cpp就好了,因為個人沒有問題。然而,當.cpp和b.cpp放在同一個專案,一個命名衝突會發生,因為函式是定義在dosomething()。這將導致連結器錯誤。
大多數命名衝突發生在兩種情況下:
1)將兩個檔案新增到具有相同名稱(連結器錯誤)的函式(或全域性變數)的同一個專案中。
2)一個程式碼檔案包含一個包含一個與其他東西衝突的識別符號的標頭檔案(編譯錯誤)。我們將在下一節課中討論標頭檔案。
隨著程式變得越來越大,並使用更多的識別符號,被引入的命名衝突的可能性大大增加。好訊息是,C++避免命名衝突提供了大量的機制(如區域性範圍,使變數在函式內部的互相矛盾,和名稱空間,我們將介紹不久),所以大部分時間你不需要擔心這個。
std名稱空間
當C++最初的設計,所有的C++標準庫中的識別符號(如CIN和法院)都可直接使用。然而,這意味著標準庫中的任何識別符號都可能與您為自己的識別符號選擇的名稱衝突。程式碼工作可能會突然有一個命名衝突的時候你#包含標準庫中的新檔案。或更糟的是,程式將編譯一個版本的C++下編譯可能不是未來版本的C++下,作為新的功能引入到標準庫可能衝突。所以C++感動所有功能在標準庫為一個特殊的區域稱為名稱空間。
就像一個城市保證城市內的所有道路都有獨特的名字,一個名稱空間保證名稱空間中的識別符號是唯一的。這樣可以防止名稱空間中的識別符號與其他識別符號衝突。
原來,std::cout的名字並非“std::cout”。這實際上只是“cout”,和“性病”是名稱空間的名字,它生活在。所有的C++標準庫的功能是在名稱空間std中定義的命名(簡稱標準)。這樣,我們不必擔心標準庫的功能與我們自己的識別符號的命名衝突。
我們將談論更多的空間在未來教訓,教你如何建立你自己的。現在,你真的需要知道名稱空間的唯一的一件事是,當我們使用一個識別符號(如std::cout),是標準庫的一部分,我們需要告訴編譯器,該識別符號在std名稱空間中的生活。
規則:當您在名稱空間中使用識別符號時,您必須始終與識別符號一起標識名稱空間
顯式名稱空間限定性標準::
告訴編譯器cout生活在std名稱空間中利用“性病的最直接的途徑::”字首。例如:

std::cout <<“Hello World!”;
這是使用cout的最安全的方式,因為沒有歧義的地方法院的生活(這顯然是在std名稱空間中)。

C++提供了其他快捷鍵說明名稱空間識別符號的一部分(通過使用語句)。我們在那些課4.3c --使用語句。

很難描述名稱空間現在因為我們還沒有覆蓋的一些語言,我真的很需要準確地描述他們的。一種認為他們現在:名稱空間將字首變數和型別的名字。這個字首函式非常像你的最後一個名字在現實生活中-它有助於確保即使你可能有相同的第一個名字作為別人,你仍然可以唯一地確定通過使用兩個你的名字在一起。這有意義嗎?我談論更多關於4章中的名稱空間。
關於你的第二個問題,因為這個語句以分號結束,你可以把另一個宣告,這個宣告的權利。然而,這通常被認為是壞的形式。每行的一個語句是推薦的做法,與一個可選的註釋到右邊(或以上)。

相關推薦

大多數命名衝突發生情況

檔案.cpp,b.cpp,和將所有編譯main.cpp就好了,因為個人沒有問題。然而,當.cpp和b.cpp放在同一個專案,一個命名衝突會發生,因為函式是定義在dosomething()。這將導致連結器錯誤。 大多數命名衝突發生在兩種情況下: 1)將兩個檔案新增到具有相同名

jQuery$命名衝突解決方法

其他一些 JavaScript 框架包括:MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。 其中某些框架也使

移進規約衝突發生的位置

只是同類遞迴造成的 posted on 2009-09-30 12:05 肥仔 閱讀(1351) 評論(0)  編輯 收藏 引用 所屬分類: LEX & YACC

jsonmodel屬性名與系統命名衝突解決方案

如今基本都是客戶端請求伺服器的模式,資料傳遞方式基本都使用JSON的字串方式。然而當我們獲取了伺服器發來的字串時,需要將其轉換成我們的資料模型。由於手動轉換程式碼的繁瑣,就有了一些自動化轉換的第三方開源庫。其中比較有名的有YYModel,JSONModel,Mantle,MJExtension。今天主要說

INSERT 語句與 FOREIGN KEY 約束"XXX"衝突。該衝突發生於資料庫"XXX",表"XXX", column 'XXX。

很多人會遇到上面的問題,我也是:問題由來 1.建立表1              create table Depts              (Dno char(5) primary key,               Dname char(20) not null

Learning C++ 之1.8a 命名衝突和std空間

假如你第一次開車去你朋友家,朋友給了你一個地址:205 Front Streat in Mill City。直到到了Mill City,你開啟地圖發現有兩個205 Front Streat,這個時候就不知道到哪裡去了。除非有一些其他的資訊來幫你輔助定位。因此你需要打電話給你的

MYSQL的鎖介紹,以及死鎖發生情況-帶例子

  mysql鎖能在併發情況下的mysql進行更好的優化 MySQL有三種鎖的級別:頁級、表級、行級,這3種鎖的特性可大致歸納如下:  表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,

DELET語句與REFERENCE約束“FK_news_category”衝突,該衝突發生於資料庫“newssystem”,表dbo.news,column 'caId'語句終止

問題           做牛腩新聞釋出系統,當刪除新聞類別表(category)中資料時出現了無法刪除並提示外來鍵衝突的情況。                分析             1

Update語句與COLUMN REFERENCE約束'FK_Orders_Customers'衝突,該衝突發生與資料庫'Northwind',表'Orders',Column 'CustomerID

可以在建立表的外來鍵時指定   on   Delete   Cascade選項(應該也可以在修改表的約束語法中指定)  如果想在資料庫修改(預設你的資料庫為SQL   Server   2000)  開啟你的企業管理器   --   點Northwind資料庫下的表   --   滑鼠右鍵   右邊的Cu

android R檔案命名衝突問題

當專案中引用了其他的library時,有一定概率會出現空指標異常,查詢後發現都是findViewById 返回的View 為空,但是進一步排查後發現id是存在的,那麼問題就出現在R檔案的id對映問題上。

RequireJS例項教程及命名衝突解決

require.js是一個遵循AMD規範,可以實現.js檔案按需分塊載入的前端框架。舉個例子,我們在寫前端程式碼時,常常會看到如下的寫法: <script src="1.js"></script> <script src="2.js">

多繼承時基類命名衝突的解決方案

 眾所周知,C++與其他語言(如C#,JAVA)一個很大的不同就是C++支援從多個類繼承。但是多繼承經常遇到這樣一種情況,如果有兩個或多個基類有相同名字和標記的方法,繼承類該怎麼去實現。如有2個基類,程式碼如下: class CBaseA { public: virtua

整理出一個比較實用的SqlHelper類 滿足大多數情況的使用

lda ted cas 當前 public 記錄 [] fig blog    /// <summary> /// SqlHelper類 by zy 2017-8-17 /// </summary> public s

大多數情況,開發人員都比較煩UI和交互,如

比較 .com 開發 人員 開發人員 .html http htm fin 大多數情況,開發人員都比較煩UI和交互,如 http://zz.letfind.com/zu/523492.htmlhttp://zz.letfind.com/zu/523495.htmlhttp:

css 命名 有的加# ,有的加點 ,有的沒加。請問下都在什麽情況下用的?

什麽 mil 們的 相對 col ont 水平 示例 ack 【nav{}】這樣的樣式是給特定的標簽直接定義樣式時使用的,這個樣式名稱是跟標簽是相對應的,比如我要給<p></p>這個標簽設置樣式,那我就可以直接寫:p{樣式}就可以,但是這樣寫並沒有特

新思科技最新報告顯示大多數軟體受到已知漏洞和許可證衝突的困擾

開發者在享受開源軟體的便利時應該注意兩點:合規性以及安全性。未按照開源許可證約定使用開源元件會引發潛在的法律糾紛。另外,開源軟體可能存在安全漏洞。開發者在使用開源元件的時候需要注意漏洞的識別,也應採取相應的程式碼安全審計。   美國新思科技公司 (Synopsys, Nasdaq:&n

外媒:失蹤的沙特記者在使館發生衝突後死亡

阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。 對此,阿里表示,該文完全捏造事

git檔案衝突合併的幾種情況

本文描述了git衝突的幾種常見情況和解決方案,老鳥請直接忽略本文。 假設衝突檔案是 test/TestCase.php   下面分5種情況討論。 1、本地不變。   然後遠端別人有更新。   git pull   這種最簡單,沒有衝突,本地工作區

ubuntu核心衝突的一種情況

剛剛過完年,過年期間,公司的伺服器關機休息了,開門以後 發現 Ubuntu 無法啟動了,公司的git服務部署在上面, 出現的介面類似於 根據提示,認為是核心的問題,經過搜尋,發現類似問題不多,記錄一下解決方法,防止遇到類似情況的同學走彎路。 說白了,就是核心衝突了,Ubuntu 是

anaconda 和 ROS的python環境發生衝突的解決方式

裝了anaconda之後的某一天我要新建一個ros工作空間,結果居然報錯: ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg' Make sure tha