摘要:從到之命名空間入門命名空間命名空間定義命名空間的使用輸入輸出入門命名空間在中,變量函數和后面要學到的類都是大量存在的,這些變量函數和類的名稱將都存在于全局作用域中,可能會導致很多沖突。
在C/C++中,變量、函數和后面要學到的類都是大量存在的,這些變量、函數和類的名稱將都存在于全局作 用域中,可能會導致很多沖突。使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突或名字 污染,namespace關鍵字的出現就是針對這種問題的。
定義命名空間,需要使用到namespace關鍵字,后面跟命名空間的名字,然后接一對{}即可,{}中即為命名 空間的成員。
但是需要注意的是不能進行賦值操作,例如我們在int a;之后進行對a的賦值a=1;
可以看到進行賦值操作會有錯誤提示。
但是我們可以int a=1這樣來定義變量
在這里借用一位大佬的發言來解釋一下:“核心是int a=1;這條語句與int a;a=1這兩條語句并不能等同。前者一條語句其實是由編譯器來完成的,后者兩條語句的則不行,a=1這個賦值操作是真正的運算,要放在計算機內存里去"執行”。在此基礎上再講一點點就是,代碼的編譯生成程序,這個過程只涉及代碼區和全局區,其中代碼區是只讀的,全局區只能存放數據,那個“執行”操作本來就完成不了,屬于無效語句,所以這樣規定。"
好的接下來我們來看看命名空間的嵌套定義,沒錯,他是允許嵌套定義的,具體事例如下:
我們在code_li1的命名空間里面又嵌套定義了一個code_li2的這樣一個命名空間。需要注意的是:一個命名空間就定義了一個新的作用域,命名空間中的所有內容都局限于該命名空間中。
我們定義了一個命名空間,那么命名空間里面的成員該怎么使用呢,可以直接用嗎?我們一起來試試看:
可以看到直接提示未定義標識符,那該怎么使用呢?這里我們給出三種方式:
加命名空間名稱及作用域限定符
使用using將命名空間成員引入
相信各位小伙伴都見過這個代碼吧:
沒錯,就是大多數人剛接觸C語言的第一個能跑起來的代碼了,那么我們用C++怎么來輸出這個語句呢?我們來看看C++是如何來實現的:
說明:
關于第二點,我們在此給出一個事例:
可能有部分初學的小伙伴不太清楚endl的作用,endl其實可以理解為end line即結束這一行,換個理解方式實際上就是換行,和C語言中的/n實際上是等價的。
那么今天的分享就到這里啦,點波訂閱+關注,下次找我不迷路,關注我,帶你學習更多小知識。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125065.html
摘要:在大型的工程中,自己定義的變量函數,類名與其他人定義的相沖突等問題。使用標準輸出控制臺和標準輸入鍵盤時,必須包含頭文件以及標準命名空間。缺省參數概念缺省參數是聲明或定義函數時為函數的參數指定一個默認值。 目錄 前言 1.命名空間 1.1命名空間定義 1.2 命名空間使用 2. C++的輸入和...
摘要:事實上語言當中有的內容,比如函數循環結構體宏等等內容,也都有,所以大家千萬不要認為語言白學了哈因為之前已經完整更新過語言的博客有需要可以往前翻,所以這里直接介紹相對語言當中新增的內容,而本章引入的內容是的關鍵字命名空間缺省參數函數重載。 ...
摘要:據我了解,很多學校在學習的時候,老師會讓學生死記一條語句,那就是那么你真的了解它嗎命名空間是一個命名空間。如果我們真的想使用的話,的命名空間遍給了我們解決方法使用命名空間。 據我了解,很多學校在學習c++的時候,老師會讓學生死記一條語句,那就是 using?namespace?std; 那么...
摘要:上面這三種均不造成重載,現在來說明原因。結論對于引用返回,返回的對象必須是棧幀銷毀后還存在的。全局,靜態,未銷毀的函數棧幀當中的都是可以的指針與引用如圖兩者底層實現差不多,引用是用指針模擬的。不建議聲明和定義分離,分離會導致鏈接錯誤。 ...
閱讀 3323·2021-11-25 09:43
閱讀 3007·2021-10-15 09:43
閱讀 1964·2021-09-08 09:36
閱讀 2918·2019-08-30 15:56
閱讀 741·2019-08-30 15:54
閱讀 2683·2019-08-30 15:54
閱讀 2971·2019-08-30 11:26
閱讀 1236·2019-08-29 17:27