c++入門
在接觸c++之前太多人都說:「c++很難,非常難」。今天我也要開始一探這c++的水了,為了避免淹死,索性我也就不去那深水區蹚了,就在這淺灘裡走一走。
c++是一門通用的程式語言,廣泛應用於系統軟體與應用軟體的開發,而我一直一來學習的c語言幾乎是c++的乙個子集。所以c語言支援的語法c++基本都支援並且需要用到。c++在c的基礎上又多了很多的特性。下面我們就對於c++的基礎知識做乙個基本的學習和掌握。
1、c++的命名空間
首先我們明確一點,c++中的命名空間是用來解決全域性命名衝突的問題。
先來看**:
//命名空間:名字的隔離,防止命名衝突
#include
#include
namespace my
namespace your
//這裡的my和your是兩個命名空間
//這樣一來我們可以使用兩個名字完全一樣的變數,而不會產生衝突。
using
namespace my;
//也可以使用這樣的方式將命名空間展開在全域性域中
//這樣一來當我們訪問乙個變數時,會先在全域性域中去找
//如果沒有找到則接著在展開的域中去找
int main()
命名空間的巢狀使用
#include
#include
namespace my
}int main()
2、c++的預設引數
//預設引數
//全預設:實現函式時所有的引數都給乙個值
//如果呼叫函式時沒有傳參則用這個給定的值
//如果函式呼叫時傳參了,則忽略對應的值
#include
#include
int add(int a = 1,int b = 2)
int main()
//半預設:函式定義時,部分形參賦予初值
//但只能從右往左依次預設
#include
#include
int add1(int a,int b,int c = 3)
int add2(int a,int b = 2,int c = 3)
//會報錯 此處不符合預設規則(從右往左依次預設)
int add3(int a,int b = 2,int c)
int main()
3、c++的函式過載
//函式過載
//在同一作用域內,一組函式的函式名相同,引數列表不同
//引數列表不同:引數的個數和型別不同。
//返回值型別可相同也可以不相同
#include
void fun1(int i)
void fun2(char c)
int main()
畫重點啦!!!c++是如何實現函式的過載的???(函式名的修飾規則)
在linux下可以使用objdump檢視目標檔案中的函式名字的修飾
經過檢視我們發現相同函式名的修飾是不一樣的.
(通過將函式的引數的相關型別在修飾中加以標明)
這也就是說雖然兩個函式的名字一樣,但二者的修飾不一樣
因此我們可以通過函式名經過修飾之後的名字找到唯一乙個函式,以此實現函式過載
避免了函式重名的問題(c語言是不能有多個函式的函式名字一樣),即不支援函式過載
c 的過載,預設引數,以及命名空間
c 是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c 擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c 就適應的問題規模而論,大小由之。關於c 的幾個小方面的想法 c 支援函式...
c 命名空間 函式過載 預設引數
在c c 中,變數 函式和類都是大量存在的,這些變數 函式和類的名稱將都存在於全域性作用 域中,可能會導致很多衝突。使用命名空間的目的是對識別符號的名稱進行本地化,以 避免命名衝突或名字汙染,namespace 關鍵字的出現就是針對這種問題的。1.1 命名空間的定義 namespace n1 1.1...
C 命名空間 預設引數 函式過載
使用命名空間是要對識別符號的名稱進行本地初始化,避免命名衝突。定義命名空間需要用到namespace關鍵字,後跟命名空間的名字,在 內為命名空間的成員 普通的命名空間 namespace n1 巢狀的命名空間 namespace n2 namespace n3 同一工程中允許存在多個相同名稱的明明空...