C 臨時變數做函式引數時的生命週期

2021-06-27 06:49:46 字數 485 閱讀 3249

c++ 中如果函式引數是乙個類物件的引用時,是否可以建立乙個臨時變數來傳入呢?

這裡其實考慮的主要是這個臨時變數的生命週期,到底是在進入函式時就被銷毀了,還是在函式呼叫完成之後才被銷毀的。

暫時還沒有看到比較權威的資料,只是寫了一段**看了一下現象,從現象上看該臨時變數是在函式呼叫完成之後才被銷毀的。

下面的一段**在windows  和centos 下做過測試,結果是一樣的。

但,僅是現象而以。

class cls_test

~cls_test() };

void func(const cls_test &tst)

int main(int argc, char *argv)

執行的結果:

cls_test() 構造

func() 函式

~cls_test() 析構

C 臨時變數的生命週期

c 中的臨時變數指的是那些由編譯器根據需要在棧上產生的,沒有名字的變數。主要的用途主要有兩類 string proc int main 其中第 6 行會產生乙個臨時變數。但並不是所有返回值都會建立臨時變數,只有當沒有將返回值賦值給其它變數時,臨時變數才會建立。這種臨時變數的生命週期很短,當表示式完成...

C 臨時變數的生命週期

c 中的臨時變數指的是那些由編譯器根據需要在棧上產生的,沒有名字的變數。主要的用途主要有兩類 1 函式的返回值,如 1 string proc 25 6int main 7其中第 8 行會產生乙個臨時變數。但並不是所有返回值都會建立臨時變數,只有當沒有將返回值賦值給其它變數時,臨時變數才會建立。這種...

C語言 指標變數做函式引數

整型變數 實型變數 字元型變數 陣列名和陣列元素等均可作為函式引數。此外,指標型變數也可以作為函式引數。include void swap int a,int b main 將上述程式改寫為 include void swap int a,int b main 對比發現改後的程式無法實現值得交換,這...