C++基礎(chǔ)語法梳理:友元類和友元函數(shù)以及using用法
本期是C++基礎(chǔ)語法分享的第五節(jié),今天給大家來分享一下:
(1)explicit(顯式)關(guān)鍵字;
(2)friend 友元類和友元函數(shù);
(3)using;
(4):: 范圍解析運(yùn)算符;
(5)enum 枚舉類型;
(6)decltype;

那么我們接下來一起來看看吧!
explicit(顯式)關(guān)鍵字
explicit 修飾構(gòu)造函數(shù)時(shí),可以防止隱式轉(zhuǎn)換和復(fù)制初始化
explicit 修飾轉(zhuǎn)換函數(shù)時(shí),可以防止隱式轉(zhuǎn)換,但?按語境轉(zhuǎn)換?除外
explicit 使用
friend 友元類和友元函數(shù)
能訪問私有成員
破壞封裝性
友元關(guān)系不可傳遞
友元關(guān)系的單向性
友元聲明的形式及數(shù)量不受限制
using
using 聲明
一條?using 聲明?語句一次只引入命名空間的一個(gè)成員。它使得我們可以清楚知道程序中所引用的到底是哪個(gè)名字。如:
構(gòu)造函數(shù)的 using 聲明
在 C++11 中,派生類能夠重用其直接基類定義的構(gòu)造函數(shù)。
如上 using 聲明,對(duì)于基類的每個(gè)構(gòu)造函數(shù),編譯器都生成一個(gè)與之對(duì)應(yīng)(形參列表完全相同)的派生類構(gòu)造函數(shù)。生成如下類型構(gòu)造函數(shù):
using 指示
using 指示?使得某個(gè)特定命名空間中所有名字都可見,這樣我們就無需再為它們添加任何前綴限定符了。如:
盡量少使用?using 指示?污染命名空間
一般說來,使用 using 命令比使用 using 編譯命令更安全,這是由于它只導(dǎo)入了指定的名稱。如果該名稱與局部名稱發(fā)生沖突,編譯器將發(fā)出指示。using編譯命令導(dǎo)入所有的名稱,包括可能并不需要的名稱。如果與局部名稱發(fā)生沖突,則局部名稱將覆蓋名稱空間版本,而編譯器并不會(huì)發(fā)出警告。另外,名稱空間的開放性意味著名稱空間的名稱可能分散在多個(gè)地方,這使得難以準(zhǔn)確知道添加了哪些名稱。
using 使用
盡量少使用?using 指示
應(yīng)該多使用?using 聲明
或者
:: 范圍解析運(yùn)算符
分類
全局作用域符(::name):用于類型名稱(類、類成員、成員函數(shù)、變量等)前,表示作用域?yàn)槿置臻g
類作用域符(class::name):用于表示指定類型的作用域范圍是具體某個(gè)類的
命名空間作用域符(namespace::name):用于表示指定類型的作用域范圍是具體某個(gè)命名空間的
:: 使用
enum 枚舉類型
限定作用域的枚舉類型
不限定作用域的枚舉類型
decltype
decltype 關(guān)鍵字用于檢查實(shí)體的聲明類型或表達(dá)式的類型及值分類。語法:
decltype 使用
今天的分享就到這里了,大家要好好學(xué)C++喲~
寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號(hào):C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
