c 中 預設定義 函式過載 引用

2021-08-29 05:11:18 字數 3426 閱讀 4228

##概要

本片部落格 的主要內容有, 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 ...