C 命名空間 過載函式

2021-09-19 17:17:31 字數 2134 閱讀 5528

1.意義:c++中引入命名空間的概念,旨在防止命名衝突與命名汙染。

2.定義方式:

namespace 命名空間名
2.特點:

(1)可以巢狀:即某個命名空間內部還可以再定義另乙個命名空間

(2)多個命名空間可以使用相同的名字。但是這不就違背了引入命名空間的初衷嗎。其實並不是,多個命名空間可以擁有相同的名字,但是命名空間內部的變數 卻不能重名。編譯器會將多個相同的命名空間進行合併。

3.使用命名空間內部的成員時

(1)

命名空間名  :: 內部變數/函式名

//eg:

//std::cin

(2)

using 命名空間名 :: 成員

//例:

using std::cin

(3)

using namespace 命名空間名

//這樣做會將該明明空間中的成員全部暴露在全域性中

不推薦使用。

1.先來看看我們熟悉的c語言中的輸入輸出

(1)輸入

//比如定義乙個變數,往變數裡邊輸入值

int a;

scanf("%d",&a);

(2)輸出

//需要格式化字串

printf("%d",a);

2.c++中的輸入/輸出

(1)輸入

using std::cin;

int a;

cin >> a;

//也支援連續輸入

int b,c;

cin >> b >> c ;

(2)輸出

using std::cout;

cout << a; //輸出剛才的a的值

//同樣也支援連續輸出

cout << b << c << endl;

//endl表示換行,相當於"\n"

注意:

1.c++中的輸入/輸出是兩個物件,它們是命名空間std下的兩個物件,所以使用時,需要用到std這個命名空間。

2.c++中的輸入/輸出不用格式化字串。

1.含義:函式名與函式的返回值型別相同的情況下

①函式引數個數不同

②函式引數型別不同

③函式引數的順序不同(感覺和②沒什麼差別)

2.原因:c++中函式的底層名是通過函式名和引數型別結合來實現的

比如:在linux下

void fun(int a,int b);

//它底層函式名是_z3funii;

其中3代表函式名包含3個字元,後面的fun就是函式名了,ii代表引數型別首字母

c語言中底層的函式名只是函式名本身,所以不能函式過載

1.全預設

//定義函式時,可以直接給引數賦值

void fun(int a=10,int b=20,int c=30)

//呼叫時

//1.有實參時

fun(1,2,3);//此時,a=1,b=2,c=3

//2.無實參時

fun(); //此時,a=10,b=20,c=30

2.半預設

void fun(int a,int b=20,int c=30)

//呼叫時

//半預設

fun(40,80); //此時,a=40,b=80,c=30

預設規則:

1.有實參時,按照實參賦值

2.全預設時,按照定義函式時引數的值來使用

3.半預設時,從右向左依次賦值

4.只能賦值全域性變數或者常量,不能使用變數來為形參賦值

C 命名空間 函式過載 引用 內聯函式

c 關鍵字 c 98 有63個 命名空間解決了 名字衝突,有作用域的作用 命名空間的使用格式 namespace n1使用方法 1.n1 變數 2.using n1 變數 3.using namespace n1 c 的輸入輸出 標頭檔案 iostream 命名空間 using namespace ...

c 命名空間 函式過載 預設引數

在c c 中,變數 函式和類都是大量存在的,這些變數 函式和類的名稱將都存在於全域性作用 域中,可能會導致很多衝突。使用命名空間的目的是對識別符號的名稱進行本地化,以 避免命名衝突或名字汙染,namespace 關鍵字的出現就是針對這種問題的。1.1 命名空間的定義 namespace n1 1.1...

C 命名空間 預設引數 函式過載

使用命名空間是要對識別符號的名稱進行本地初始化,避免命名衝突。定義命名空間需要用到namespace關鍵字,後跟命名空間的名字,在 內為命名空間的成員 普通的命名空間 namespace n1 巢狀的命名空間 namespace n2 namespace n3 同一工程中允許存在多個相同名稱的明明空...