柚子快報激活碼778899分享:引用 C++前期概念
柚子快報激活碼778899分享:引用 C++前期概念
目錄
命名空間
命名空間定義
1. 正常的命名空間定義
2. 命名空間可以嵌套
?3.頭文件中的合并?
命名空間使用
命名空間的使用有三種方式:
1:加命名空間名稱及作用域限定符(::)
2:用using將命名空間中某個成員引入
3:使用using namespace 命名空間名稱 引入
C++輸入&輸出
說明:
std命名空間的使用慣例:
?缺省參數(shù)
缺省參數(shù)分類
1:全缺省參數(shù)
2:半缺省參數(shù)
注意:半缺省參數(shù)必須從右到左依次來給出,不能間隔給,缺省參數(shù)不能在函數(shù)聲明和定義中同時出現(xiàn)
?編輯
3. 缺省值必須是常量或者全局變量
函數(shù)重載
1、參數(shù)類型不同
2、參數(shù)個數(shù)不同
3、參數(shù)類型順序不同
?main
引用
引用概念
重:類型& 引用變量名(對象名) = 引用實體;
注意:
引用特性
1. 引用在定義時必須初始化
2. 一個變量可以有多個引用
3. 引用一旦引用一個實體,再不能引用其他實體
常引用
使用場景(比C簡單)
1. 做參數(shù)(交換值)
2. 引用做返回值(不用創(chuàng)建臨時變量)
注意:引用是不可以改變指向的
地址的交換值(指針也可以開別名)
鏈表的雙指針也可以更簡單
總結(jié):
引用的讀寫功能和優(yōu)點
引用和指針的區(qū)別
內(nèi)聯(lián)函數(shù)(短小函數(shù)定義 換用內(nèi)聯(lián)函數(shù))
宏的優(yōu)缺點?
優(yōu)點:
缺點:
auto在for循環(huán)中
空指針
命名空間
在C/C++中,變量、函數(shù)和后面要學(xué)到的類都是大量存在的,這些變量、函數(shù)和類的名稱將都存 在于全局作用域中,可能會導(dǎo)致很多沖突。使用命名空間的目的是對標(biāo)識符的名稱進行本地化, 以避免命名沖突或名字污染,namespace關(guān)鍵字的出現(xiàn)就是針對這種問題的。
比如在C語言中
C語言沒辦法解決類似這樣的命名沖突問題,所以C++提出了namespace來解決
#include
#include
int rand = 10;
// C語言沒辦法解決類似這樣的命名沖突問題,所以C++提出了namespace來解決
int main()
{
printf("%d\n", rand);
return 0;
}
// 編譯后后報錯:error C2365: “rand”: 重定義;以前的定義是“函數(shù)”
命名空間定義
定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對{ }即可,{ }
中即為命名空間的成員。
1. 正常的命名空間定義
namespace N
{
// 命名空間中可以定義變量/函數(shù)/類型
int rand = 10;
int Add(int left, int right)
{
return left + right;
}
struct Node
{
struct Node* next;
int val;
};
}
2. 命名空間可以嵌套
namespace N1
{
int a;
int b;
int Add(int left, int right)
{
? ? return left + right;
}
namespace N2
{
? ? int c;
? ? int d;
? ? int Sub(int left, int right)
? ? {
? ? ? ? return left - right;
? ? }
}
}
?3.頭文件中的合并?
同一個工程中允許存在多個相同名稱的命名空間,編譯器最后會合成同一個命名空間中。一個工程中的test.h和上面test.cpp中兩個N1會被合并成一個.不同的頭文件里定義的命名域,到.cpp里包含上這兩個頭文件,相當(dāng)于合并了,都能訪問到.
注意:一個命名空間就定義了一個新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
命名空間使用
比如:(里面printf,會出現(xiàn)//編譯報錯:error C2065: “a”: 未聲明的標(biāo)識符)
namespace N
{
// 命名空間中可以定義變量/函數(shù)/類型
int a = 0;
int b = 1;
int Add(int left, int right)
{
return left + right;
}
struct Node
{
struct Node* next;
int val;
};
}
int main()
{
// 編譯報錯:error C2065: “a”: 未聲明的標(biāo)識符
printf("%d\n", a);
return 0;
}
命名空間的使用有三種方式:
展開命名空間會進去搜索,展開命名空間域就等于暴露到全局
1:加命名空間名稱及作用域限定符(::)
int main()
{
? ?printf("%d\n", N::a);
? ?return 0; ? ?
}
2:用using將命名空間中某個成員引入
using N::b;
int main()
{
? ?printf("%d\n", N::a);
? ?printf("%d\n", b);
? ?return 0; ? ?
}
3:使用using namespace 命名空間名稱 引入
using namespce N;
int main()
{
? ?printf("%d\n", N::a);
? ?printf("%d\n", b);
? ?Add(10, 20);
? ?return 0; ? ?
}
C++輸入&輸出
?std是C++標(biāo)準(zhǔn)庫的命名空間名,C++將標(biāo)準(zhǔn)庫的定義實現(xiàn)都放到這個命名空間中
#include
// std是C++標(biāo)準(zhǔn)庫的命名空間名,C++將標(biāo)準(zhǔn)庫的定義實現(xiàn)都放到這個命名空間中
using namespace std;
int main() {
cout"Hello world!!!"endl;
return 0; }
說明:
1. 使用cout標(biāo)準(zhǔn)輸出對象(控制臺)和cin標(biāo)準(zhǔn)輸入對象(鍵盤)時,必須包含< iostream >頭文件以及按命名空間使用方法使用std。 2. cout和cin是全局的流對象,endl是特殊的C++符號,表示換行輸出,他們都包含在包含< iostream >頭文件中。3. 是流插入運算符,>>是流提取運算符。4. 使用C++輸入輸出更方便,不需要像printf/scanf輸入輸出時那樣,需要手動控制格式。C++的輸入輸出可以自動識別變量類型。5. 實際上cout和cin分別是ostream和istream類型的對象,>>和也涉及運算符重載等知識, 這些知識我們我們后續(xù)才會學(xué)習(xí),所以我們這里只是簡單學(xué)習(xí)他們的使用。后面我們還有有 一個章節(jié)更深入的學(xué)習(xí)IO流用法及原理。 注意:早期標(biāo)準(zhǔn)庫將所有功能在全局域中實現(xiàn),聲明在.h后綴的頭文件中,使用時只需包含對應(yīng) 頭文件即可,后來將其實現(xiàn)在std命名空間下,為了和C頭文件區(qū)分,也為了正確使用命名空間, 規(guī)定C++頭文件不帶.h;舊編譯器(vc 6.0)中還支持格式,后續(xù)編譯器已不支持,因 此推薦使用+std的方式。
#include
using namespace std;
int main()
{
? int a;
? double b;
? char c;
? ?
? // 可以自動識別變量的類型
? cin>>a;
? cin>>b>>c;
? ?
? cout< ? cout< ? return 0; std命名空間的使用慣例: std是C++標(biāo)準(zhǔn)庫的命名空間,如何展開std使用更合理呢? 1. 在日常練習(xí)中,建議直接using namespace std即可,這樣就很方便。2. using namespace std展開,標(biāo)準(zhǔn)庫就全部暴露出來了,如果我們定義跟庫重名的類型/對象/函數(shù),就存在沖突問題。該問題在日常練習(xí)中很少出現(xiàn),但是項目開發(fā)中代碼較多、規(guī)模 大,就很容易出現(xiàn)。所以建議在項目開發(fā)中使用,像std::cout這樣使用時指定命名空間 + using std::cout展開常用的庫對象/類型等方式。 ?缺省參數(shù) 缺省參數(shù)就是給出的函數(shù)參數(shù)的默認值 在調(diào)用有缺省參數(shù)的函數(shù)時,如果沒有指定實參則采用該默認值,否則使用指定的實參 缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個缺省值。在調(diào)用該函數(shù)時,如果沒有指定實 參則采用該形參的缺省值,否則使用指定的實參。 ?Func(); ????// 沒有傳參時,使用參數(shù)的默認值 ?Func(10); ??// 傳參時,使用指定的實參 void Func(int a = 0) { cout< } int main() { Func(); ? ? // 沒有傳參時,使用參數(shù)的默認值 Func(10); ? // 傳參時,使用指定的實參 return 0; } 缺省參數(shù)分類 1:全缺省參數(shù) void Func(int a = 10, int b = 20, int c = 30) { ? ? cout<<"a = "< ? ? cout<<"b = "<
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。