日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++入门基础知识

發(fā)布時間:2023/12/20 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++入门基础知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
命名空間 ?
剛開始接觸c++,我們會發(fā)現(xiàn)與C語言相比不光頭文件有所不同,還會發(fā)現(xiàn)using namespce std;這句話,其實這就是c++的命名空間。?
(1) 概念 ?
命名空間是為了防止名字沖突提供更加可控的機制。命名空間分割了全局命名空間,其中每一個命名空間是一個作用域。由三部分組成,分別是namespace、空間名字和一系列由花括號括起來的聲明和定義。?
(2) 作用 ?
是建立一些互相分隔的作用域,把一些全局實體分隔開來。?
(3) 例子 ?
命名空間和類就好比是文件夾和文件的關(guān)系。命名空間就像是文件夾,它包含了若干個文件,這樣可以將定義的很多類整齊地擺放起來,不僅可以避免命名沖突,還可以簡化對類成員的訪問。用花括號把文件的一部分括起來, 并以關(guān)鍵字namespace開頭給它?
起一個名字: namespace name1 { int a = 0; } namespace name2 { int a = 1; } name1: : a = 3; name2: : a = 4; ::是作用域解析符 (4) 優(yōu)點 ?
如果在程序一開始不寫上using namespace std;那么每次使用時就要這樣寫,這樣顯然比較麻煩。?

注:endl相當(dāng)于c語言中的\n.

#include<iostream> //using namespace std; int main() {std::cout<<"hello world"<<std::endl;cout<<"hello world"<<endl;return 0; } (5) 嵌套使用 #include<iostream> using namespace std; namespace you {int a=1;namespace me{int a=2;} } int main() {cout <<you::me::a << endl; return 0; }

輸入輸出流

流:數(shù)據(jù)之間的傳輸操作。?
輸入輸出操作是由istream輸入流和ostream輸出流提供的,iostream是從這兩個類中派生的,允許雙向輸入和輸出。這個庫定義了3個標準流對象。?
(1)cin:標準輸入的istream類對象,使用戶能夠從終端讀數(shù)據(jù),默認是鍵盤。> > 是輸入操作符。?
(2)cout:標準輸出的ostream類對象,使用戶能夠從終端寫數(shù)據(jù),默認是屏幕。< < 是輸出操作符。?
(3)cerr:標準輸出的ostream類對象,cerr輸出程序錯誤,默認是屏幕。

重載

(1)概念

所謂重載,其實就是“一物多用”。?
函數(shù)重載,即在同一作用域類, 一組函數(shù)的函數(shù)名相同, 參數(shù)列表不同( 個數(shù)不同/類型不同) ,返回值可同可不同。不僅函數(shù)可以重載,運算符也可以重載,例如,運算符”<<”和”>>”既可以作為位移運算符,又可以作為輸入操作符和輸出操作符。

(2)原因

那么,為什么C++支持重載呢?其原因在于函數(shù)名的修飾規(guī)則。從代碼的編譯到運行,在VC6.0或VS這種編譯器下,它是系統(tǒng)直接完成了翻譯與鏈接,直接生成了運行結(jié)果。?
編譯器內(nèi)部完成了翻譯部分:?
1.預(yù)處理?
2.編譯過程:將高級語言轉(zhuǎn)為匯編語言。?
3.匯編過程:匯編語言轉(zhuǎn)為二進制程序,生成目標文件。?
4.鏈接部分:所引用的數(shù)據(jù)鏈接進來,形成可執(zhí)行程序。?
比如一個函數(shù)的聲明如下:?
void function(int x,int y);?
在c語言中,編譯器在編譯后在庫中的名字為_function?
在c++中,編譯器在編譯后在庫中的名字為_function_int_int,在鏈接時是找名字進行鏈接,由于C++中它們的名字不一樣,所以就不會報錯。?
(3)規(guī)則

① 函數(shù)名要相同;?
② 參數(shù)個數(shù)不同,參數(shù)類型不同,參數(shù)順序不同,均可構(gòu)成重載;?
③ 返回值類型不同則不可以構(gòu)成重載。

C++缺省參數(shù)

(1)概念:在函數(shù)聲明或定義的時候給形參一個默認的參數(shù)。這樣在調(diào)用該函數(shù),如果沒有給實參,函數(shù)的這個形參就默認為這個值。

// 全缺省參數(shù) int Add1 (int a = 0, int b = 0) { return a + b; } //半缺省參數(shù) int Add2 (int a, int b = 0) { return a + b; }int main() { count<<Add(1,2)<<endl;//此處用默認的(1,2) count<<Add()<<endl;//不傳值時默認用缺省的(0,0) return 0; }

(2)使用規(guī)則

缺省參數(shù)賦值必須要連續(xù)且從右向左賦值;?
不能把const的全局變量作為缺省值;?
缺省值必須是常量;?
調(diào)用時你只能從最后一個參數(shù)開始進行省略;

指針和引用

指針?
學(xué)習(xí)C語言時已經(jīng)知道,每一個數(shù)據(jù)都是有地址的,通過地址就可以找到所需的內(nèi)存空間。?
(1)概念:一個變量的地址稱為該變量的指針。?
(2)使用方法:基類型 * 指針變量名

*const指針*(常指針)int a=1; const int*p=&a;//定義了p為指向整形變量a的const指針變量 *p=15;//非法(不允許通過指針變量改變它指向的對象的值)

指針的作用和特點前面已經(jīng)有了深入學(xué)習(xí),在這里不再加以詳細介紹。

引用

(1)概念:引用不是定義一個新的變量, 而是給一個已經(jīng)定義的變量重新起一個別名。?
(2)使用方法:類型 &引用變量名 = 已定義過的變量名.

*普通引用* int mian() {int a=10;int&b=a; }
*const引用* int main() {const int a=10;//a被const修飾,它的值就不能再被改變int &b=a;//編譯不能通過const int &b=a;//此處可以通過,a的值改變b的值也會改變const int &b=5; // 常量具有常性, 只有常引 用可以引 用常量 }
*不同類型變量間的引用* int main() {int a=20;double b=30.123;int &c=b;//不能通過const int &c=b;//編譯可以通過,原因見下圖 }

?
想要用int類型的c來引用double型的b,首先先會將b變量放入一個int類型臨時變量,再用const int類型的c來引用這個臨時變量,臨時變量具有常屬性,所以就需要有一個const int類型的名字來完成這個引用。

(3)特點:?
1. 一個變量可取多個別名?
2. 引用必須初始化?
3. 引用只能在初始化的時候引用一次, 不能改變?yōu)樵僖闷渌淖兞俊?/p>

(4)作用

1.做參數(shù)

1.做參數(shù)#include<iostream> using namespace std; void swap(int&a,int&b) {int c=a;a=b;b=c; } int main() {int x1=10;int x2=20;cout<<x1<<" "<<x2<<endl;swap(x1,x2);cout<<x1<<" "<<x2<<endl; }

2.做返回值

#include<iostream> using namespace std; int red; int &Add(int t1,int t2) {int ret=t1+t2;return ret; } void main() {int a=2,b=3;int &c=Add(a,b);cout<<c<<endl; }

指針和引用的區(qū)別

(1)指針是存儲另一個對象的地址的變量,而引用是對象的別名。?
(2)指針未被初始化或被刪除時,應(yīng)將NULL賦給它,但引用不能為空。?
(3)sizeof指針對象和引用對象的意義不一樣,sizeof引用是指向變量的大小,sizeof指針是指對象地址的大小。?
(4)引用只能在定義時初始化一次, 之后不能改變指向其它變量( 從一而終), 指針變量的值可。?
(5) 指針和引用自增(++)自減(–)意義不一樣。?
(6) 相對而言, 引用比指針更安全。


總結(jié)

以上是生活随笔為你收集整理的c++入门基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。