##概要
本片部落格 的主要內容有, c++中函式預設定義、 函式過載的機制 、函式名在vs環境下編譯後的修改,引用 及其 注意事項。最後列了乙個表
函式過載
引用 &
c++中的關鍵字
預設引數
預設引數是宣告或者定義函式的引數的時候指定乙個預設值。在呼叫該函式時候。如果沒有指定實參,那麼就採用預設值進行處理。
void
testret
(int number =10)
intmain()
半預設引數: 只能從右向左依次寫入預設
int
testfunc
(int a=10,
int b=20,
int c)
注意事項:
1.半預設引數必須從右向左來寫入,不能間隔著寫出來
2.預設引數不能同時在宣告和定位的位置,要麼在函式宣告的時候設定好預設,要麼在定義函式的時候設定預設。
3.預設的值必須是常量,和全域性變數
過載的定義
函式過載的概念:對於同乙個作用域來說,函式的名字必須相同,引數列表必須不同。其中引數列表包含了引數的個數,引數的型別,型別的次序,與返回值的型別沒有關係.
一下例子是錯誤的
long
testret
(double a ,
double b)
short
testret
(double a,
double b)
上面的例子中,引數列表完全相同,但是它的返回值型別卻不相同。實際上,以上引數沒有進行函式過載
函式在編譯後的名字修飾問題
int
add(
int a,
int b)
;int
main()
在c語言的環境下進行編譯,它的命名規則是 _ + 函式名字
在vs 2013 c++的環境下進行編譯,它的命名規則是 看似的雜亂的序列。
分析 :
首先是以 ? 號開始 + 函式的名字 + @ 表明函式的名字
接著以 ya開始 + h (表明整形) + h(表明第乙個引數的型別) +h(表明第二個引數的型別) + @ 此段表明函式引數列表的內容
最後 以 z表明這個函式的丁一結束
如果要想在c++編譯環境中使用 c語言風格編譯 只需要在函式前加入
extern "c" int add(int a,int b)
怎麼使用引用 & 符號?
首先在c語言當中寫乙個交換程式。
void
swap
(int left,
int right)
這種傳值呼叫沒有函式的***,不會影響外部的實參,也就是說無法通過形參的改變,來改變外部的實參。
void
swap
(int
*left,
int*right)
{ if
( left ==
null
&& right ==
null
)int temp =
*left;
*left =
*right;
*right = temp;
}
這種函式的***明顯,函式使用前必須先驗空。但是能夠達到通過改變形參來影響實參。
這個時候c++提供了一種方便的概念,即引用 &。引用的大體意思就是給引數變數起乙個別名。
void
add(
int&right,
int&left)
應用變數不會開闢動態記憶體空間。 因為它是已存在的變數的別名。
int
main()
引用的特性:
1.引用在定義時必須初始化
2.乙個變數可以有多個引用
3.引用一但被定義就不能再次引用了
引用的常屬性帶來的麻煩
const型別的變數常引用分析
int
main()
對於3,出現問題的原因是,double 型別的資料被引用了int 的別名。會造成小數部分的捨去,但是 int &rd是錯誤的。說明double 型別的資料建立了新的空間。並且這個空間是具有常屬性的。
引用變數作為返回值出現隨機值得情況
以下**的輸出結果是 10 ,隨機值,隨機值。
#include
using
namespace std;
int&
testref()
intmain()
有以下執行過程:
資料型別:
void int char float double bool w_char
型別定義:
struct union enum class typedef
真值:true false
型別修飾符:
long short signed unsigned
型別限定符:
const volatile restrict const_case static static_case
儲存說明符:
auto register static extern thread_local mutable
其他修飾符:
inline asm
迴圈控制:
for while do
跳轉控制:
break continue return goto
分支結構:
if else switch case default
記憶體管理:
new delete
訪問限定符:
this friend virtual mutable explicit operator
類訪問修飾符:
private protected public
模板:template typename
命名空間:
namespace using
異常處理:
throw try catch
C 中的預設引數 引用 函式過載
我們學過c語言的都知道,在函式沒有指定指定引數列表時,預設可以接受任意多個引數,便有了可變引數列表。在c 中,對於引數列表有了嚴格的檢測,對於沒有引數列表的函式,預設為void,不允許接受任何引數。那麼預設引數又是什麼呢?下面我們通過乙個例子來說明。include using namespace s...
C 函式過載, 預設引數
在我們的自然語言當中,乙個詞在不同的情景之下可能會有多重不同的含義,但是我們可以通過合理地判斷來確定該詞的真正含義,這種情況,我們可以說該詞被 過載 了.關於函式過載的概念 函式過載其實就是函式的一種特殊的情況,在我們的c 中允許在同一作用域當中宣告幾個功能類似的同名函式,但是這個同名函式的形參列表...
C 預設引數 函式過載
預設引數 預設引數是宣告或定義函式時為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。例void testfunc int a 0 intmain 預設引數分類 1.全預設引數 void testfunc int a 10,int b 20,int c ...