C 臨時量與臨時物件及程式的相關優化

2021-09-20 02:55:46 字數 1641 閱讀 9196

一、臨時量與臨時物件

臨時量:

內建型別生成的臨時量是常量(臨時量,暫存器帶出來)。

自定義型別生成的臨時量是變數 ,在記憶體中。

隱式生成生成的臨時量是常量 ,顯式生成生成的臨時量是變數 。

臨時物件:

臨時物件是系統臨時分配的物件,在沒主動宣告所需物件而又使用其功能時產生的

顯示物件:出現型別名

隱式物件:不出現型別名

注意: 臨時物件的生存週期只在本條語句,臨時物件一旦被引用,它的生存週期就和引用相同。

物件如何生成?

先分配記憶體 在呼叫建構函式初始化物件的成員變數  產生物件物件析構了 物件就不存在了,物件的構造和析構是相反的。

程式分析 

// 構造t1

test(int) 

// 構造t2

test(int) 

// gettestobject(t1)實參t1通過值傳遞給test gettestobject(test t) 形參 t ,呼叫拷貝構造

test(const test &) 

//test tmp(value); 構造物件tmp

test(int)

//return tmp; 將返回值tmp拷貝構造 main函式棧棧上的臨時物件

test(const test&)

// 析構tmp

~test()

// 析構形參 t

~test()

// t2 = gettestobject(t1); 臨時物件呼叫賦值函式賦值給t2

operator=

// 析構臨時物件

~test()

// 列印 ma

100// 析構t2

~test()

// 析構t1

~test()

優化1:函式呼叫傳物件時,按物件引用來傳遞,會少兩個函式

優化2:函式返回物件的時候,應該返回乙個臨時物件,不要先定義,再返回

優化3:呼叫返回物件的函式時,應該以初始化的方式呼叫,不要以賦值的方式呼叫 

更多資源敬請期待!!

C 中關於臨時量和臨時物件

一 臨時量的生成 1 內建型別產生的臨時量 常量 不可更改 2 自定義型別產生的臨時量 變數 可以更改 3 隱式產生的臨時量 常量 二 返回值 1 返回內建型別的時候,產生的都是暫存器的立即數 2 返回自定義型別的時候,也是通過暫存器返回的,但是用指標或者引用來接收返回值時,編譯器會自動產生臨時量 ...

C 中的臨時物件

我們知道在c 的建立物件是乙個費時,費空間的乙個操作。有些固然是必不可少,但還有一些物件卻在我們不知道的情況下被建立了。通常以下三種情況會產生臨時物件 1,以值的方式給函式傳參 2,型別轉換 3,函式需要返回乙個物件時 現在我們依次看這三種情況 一,以值的方式給函式傳參。我們知道給函式傳參有兩種方式...

C 中的臨時物件

1,臨時物件神秘在於不知不覺就請入程式當中,並且給程式帶來了一定的問題 2,下面的程式輸出什麼?為什麼?1 include 2 3class test411 12 test 這裡程式作者想要 復用,直接呼叫已經構造好的函式來完成沒有引數的建構函式的函式體 1316 17void print 1821...