c 臨時變數

2021-08-01 10:32:10 字數 549 閱讀 1175

「有時候,在求表示式的期間,編譯器必須建立臨時變數(temporary object)。像其它任何物件一樣,它們需要儲存空間,並且必須能夠構造和銷毀。需要注意的是,編譯器建立的這個臨時變數為常量.」 – thinking in c++

看下面**:

class a

}a generatea()

intmain()

a a = generatea()時,編譯器不會建立臨時變數,因為在generatea()返回之前,就已經把函式裡面的a物件拷貝給了main函式中的a物件。

generatea()這句會使編譯器建立乙個臨時物件,因為generatea()是有返回值的,但是在main函式中並沒有物件來收留它,所以編譯器會建立乙個臨時物件來收留它,為可能的後續操作做準備。例如:generatea().print()

c 陷阱之臨時變數

1.向上強制型別轉化產生臨時變數 include class base void say class drived public base int main 我們開始都會認為在呼叫say 之後,物件d的m b成員變數會被修改為7但是結果卻輸出 1 原因如下 這段 是將物件d的內容拷貝到臨時變數中,並...

C 引用與臨時變數

引用是c 的一種復合型別,是已定義的變數的別名,與原變數在同乙個記憶體位址。引用常常作為函式的形參,此時函式將使用原始資料 而不是原始資料的副本 使用引用時需要注意以下兩點 必須在宣告引用的時候就進行初始化,否則編譯會報錯。一旦成為某個變數的引用,則將一直效忠於它。下面通過乙個例子,來看看引用在函式...

C 常量引用與臨時變數

由 練習7.49 b 產生出來的小問題。總結 1.不要對臨時變數進行改變。要傳遞臨時變數,得用常量引用。2.當引用不需要更改時,用const引用。問題 struct sales data sales data combine sales data sales data sales data comb...