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 同一工程中允許存在多個相同名稱的明明空...