CPP入門基礎知識

2021-08-03 04:00:28 字數 2586 閱讀 8152

1  命名空間

命名空間相當於乙個更加靈活的全域性域,可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個名字

如下定義兩個命名空間

namespace aa1
namespace aa2

int main()

可以看到兩個變數名都可以用a

所以命名空間域解決了全域性命名衝突的問題

標準c++庫中所有元件都是在乙個被稱為std的名字空間中宣告和定義的。在採用標準c++平台上使用標準c++庫中的元件,只要寫乙個using指示符:using namespace std,就可以直接使用標準c++庫中的所有成員。

命名空間可以巢狀

namespace aa1

}int main()

2 c++基本的輸入輸出流

標準輸入流是從標準輸入裝置(鍵盤)流向程式的資料,在標頭檔案iostream.h中定義了cin,cout,cerr,clog4個流物件。cin是輸入流,cout,cout,cerr,clog是輸出流。

cin是istream類的物件,它從標準輸入裝置(鍵盤)獲取資料,程式中的變數通過流提取符「>>」從流中提取資料。流提取符「>>」從流中提取資料時通常輸入流中的空格,tab鍵,換行符等空白字元。

注:只有在輸入完資料再按回車鍵後,該行資料才能進入鍵盤緩衝區,形成輸入流,提取運算子「>>」,才能從中提取資料。

預定義的物件cout是ostream類的乙個例項。cout物件連線到標準輸出裝置,通常是顯示屏。cout與流插入運算子「<<」結合使用,c++編譯器根據要輸出變數的資料型別,選擇合適的流插入運算子來顯示值。《運算子被過載來輸出內建型別(整型,浮點型,double型,字串和指標)的資料項。

流插入運算子《在乙個語句中可以多次使用。

3  過載

過載:函式名相同,函式的引數列表不同(包括引數個數和引數型別),返回型別可同可不同。過載是可使函式,運算子等處理不同型別資料或是接受不同個數的引數的一種方法。

注:返回值不同不能構成過載

void foo(int x, int y)

void foo(char c)

如上兩個函式構成過載,以函式宣告void foo(int x,int y)為例,該函式被c編譯器編譯後在庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字用來支援函式過載和型別安全連線。在找名字鏈結時,c語言中函式名是唯一的,所以編譯器此時會報錯。

4  c++預設函式

預設引數定義:預設引數就是在宣告方法的某個引數的時候為之指定乙個預設值,在呼叫該方法時如果採用該預設值,就無須指定帶引數。

預設引數使用規則:

1)只有引數列表的後部引數才可以是預設的

2)一旦使用預設引數,那麼這個引數後面的所有引數都必須是預設的。(從左至右,第乙個為預設,則所有均為預設引數)

3)預設引數只能放在函式宣告中,通常在乙個標頭檔案中。

int add(int a = 10, int b = 20)

int main()

5  指標和引用

引用:引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。

定義的格式為:型別  & 引用變數名=已經定義過的變數名

引用的特點:

1)乙個變數可取多個別名

2)引用必須初始化

3)引用只能在初始化的時候引用一次,不能改變為再引用其他的變數

int main()

const引用

int a = 10;

const int& b = a; //b是a的別名

a = 5; //a改變b的值也會改變

//b=2; //b是常量,不能給常量賦值

cout << b << endl;

const int d1 = 1;

const int& d2 = d1; //常量具有常性,只有常引用可以引用常量

double d3 = 1.1;

//int& d4 = d3; //d3是double型別,d4是int,d3賦值給d4時要

//生成乙個臨時變數,d4引用的是這個帶有常性的臨時變數,不能賦值

引用做引數(如果形參為引用型別,則形參是實參的別名)

void swap(int& m, int& n)

引用做返回值

int& add(int d1, int d2)

傳引用返回時,取ret的位址放到暫存器eax中

如果返回物件出了當前函式的作用域依舊存在,則最好使用引用返回。

引用和指標的區別和聯絡

1)引用只能在定義時初始化一次,之後不能改變指向其他變數,指標變數的值可變

2)引用必須指向有效的變數,指標可以為空

3)sizeof引用得到的是所指向變數的大小,sizeof指標是物件位址的大小

4)指標和引用自增自減意義不一樣

5)引用比指標更安全

CPP入門基礎知識

一.命名空間 1.命名空間的定義 命名空間的名字在其所在作用域中是唯一的,命名空間可以在全域性作用域或者其它作用域內部定義,但是不能在函式或者類的內部定義,命名空間作用域不能以分號結束。1 每個命名空間都是乙個作用域 命名空間中的每個名字必須引用該命名空間中的唯一實體,命名空間中的實體稱為命名空間的...

cpp入門基礎知識

1.命名空間域是隨標準c 而引入的。它相當於乙個更加靈活的檔案域 全域性域 可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個名字 namespace name1 namespace name2 name1 a 3 name2 a 4 2.名字空間域解決全域性命名衝突的問題...

cpp入門基礎知識

1.命名空間 命名空間 namespace 將全域性作用域分成不同的部分,乙個命名空間是乙個作用域,不同命名空間中的識別符號可以重名而不不會衝突,命名空間可以相互巢狀使用。include using namespace std int main 半預設引數 int add2 int a,int b ...