CPP入門基礎知識

2021-08-02 18:57:20 字數 2485 閱讀 2897

一.命名空間

1.命名空間的定義

命名空間的名字在其所在作用域中是唯一的,命名空間可以在全域性作用域或者其它作用域內部定義,但是不能在函式或者類的內部定義,命名空間作用域不能以分號結束。

(1)每個命名空間都是乙個作用域

命名空間中的每個名字必須引用該命名空間中的唯一實體,命名空間中的實體稱為命名空間的成員,不同命名空間的成員可以具有相同的名字。

命名空間內部各成員之間可以直接訪問,外部的**必須指出所引用成員名字定義在哪個命名空間中。namespace 關鍵字使得我們可以通過建立作用範圍來對全域性命名空間進行分隔。本質上來講,乙個命名空間就定義了乙個範圍。名字空間域是隨標準c++而引入的。它相當於乙個更加靈活的檔案域(全域性 域),可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它 起乙個名字:

namespace a1

namespace a2

(2)從命名空間外部使用命名空間成員:

使用限定名namespace_name::member_name

使用這種方法引用成員可能有些麻煩,可以使用using宣告

using cpp_primer::query;

在此宣告之後,程式無需使用cpp_primer限定符,可直接使用成員名字query。

(3)名字空間域解決全域性命名衝突的問題.

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

#include 

using

namespace

std;

main()

(4)命名空間定義可以是不連續的

與其他作用域不同,命名空間可以在不同的部分定義,命名空間由這些分離的定義部分組成,從這點來看,命名空間的定義是可以累積的。

命名空間可以分散在不同的檔案中,在不同的檔案中的命名空間定義也是累積的。

由於名字只在宣告名字的檔案中可見,在這一規定的限制下,如果命名空間的一部分需要定義在另外的檔案中,那麼被定義部分的名字依然要再次宣告。

也就是說,如果該成員之前不存在,那就新增該成員及定義;如果該成員已經在其他檔案中宣告,那麼在此處只是由於要定義所以再次出現了宣告。

2.c++基本的輸入輸出流(簡單介紹一下就行)

cout是標準輸出流物件,<< 是輸出操作符;

cin是標準輸入流物件,>>是輸入操作符;

endl是換行操作符;

#include

using namespace std;

int main ()

//半預設引數

int add2 (int a, int b = 0)

void test ()

5.指標和引用(概念、使用方法、做引數、做返回值的作用,指標和引用的區別)

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

指標是乙個指向乙個記憶體單元的位址

int

a=1;

int*p=a;

intb=1

int&b=a;

(2)對於引用 :乙個變數可取多個別名 ,引用必須初始化 ,引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。而對於指標,存在多級指標並且指標可以為空

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

引用的特點:

乙個變數可取多個別名 引用必須初始化 引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。

void testreference1 () 

上述**中a,b,c三個變數是一樣的,位址也是相同的。

//const引用

void testreference2 ()

//引用作為引數

【引用傳遞】如果形參為引用型別,則形參是實參的別名。

void swap (int& left, int& right)

【指標傳遞】

void swap (int* pleft, int* pright)

int temp = *pleft;

*pleft=*pright;

*pright = temp;

//傳引用作為返回值

int& add (int d1, int d2)

傳值作為返回值

int add (int a, int b)

//傳值返回時,是將ret的值放到暫存器中;傳引用返回時,是將ret的位址放到暫存器中

CPP入門基礎知識

1 命名空間 命名空間相當於乙個更加靈活的全域性域,可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個名字 如下定義兩個命名空間 namespace aa1namespace aa2 int main 可以看到兩個變數名都可以用a 所以命名空間域解決了全域性命名衝突的問題 ...

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 ...