91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《Effective C++》之條款26:盡可能延后變量定義式的出現時間

發布時間:2020-04-01 16:35:37 來源:網絡 閱讀:395 作者:313119992 欄目:編程語言

《Effective C++》

條款26:盡可能延后變量定義式的出現時間

        只要你定義了一個變量而其類型帶有一個構造函數和析構函數,那么當程序的控制流到達這個變量定義式時,你便得承受構造成本;當這個變量離開作用域時,你便得承受析構成本。即使這個變量最終并未被使用,仍需耗費這些成本,所以你應該盡量避免這種情形。


對于“盡可能延后”的理解:

       不只應該延后變量多的定義,直到非得使用該變量的前一刻為止,甚至應該嘗試延后這份定義直到能夠給它初始實參為止。如果這樣,不僅能夠避免構造(析構)非必要對象,還可以避免無意義的default構造行為。更深一層說,以“具明顯意義之初值”將變量初始化,還可以附帶說明變量的目的。


在循環中如何選擇呢?

//方法A:定義于循環外
Widget w;
for(int i = 0;i < n ; i++)
{
    w = 取決于i的某個值;
    ...
}

//方法B:定義于循環內
for(int i = 0 ; i < n ;i++)
{
    Widget w(取決于i的某個值);
    ...
}

分析:

做法A:1個構造函數 + 1個析構函數 + n個賦值操作

做法B:n個構造函數 + n個析構函數

如果classes的一個賦值成本低于一組構造+析構成本,做法A大體而言比較高效。尤其當n值很大的時候。否則做法B或許較好。

此外,做法A造成名稱w的作用域比做法B更大,有時那對程序的可理解性和易維護性造成沖突。因此除非(1)你知道賦值成本比“構造+析構”成本低;(2)你正在處理代碼中效率高度敏感的部分。否則你應該選擇做法B。

總結

盡可能延后變量定義式的出現。這樣做可增加程序的清晰度并改善程序效率。

2016-11-07 21:33:24

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商城县| 杂多县| 磐石市| 景洪市| 宝兴县| 乐安县| 平乐县| 虞城县| 桐梓县| 永吉县| 和静县| 霸州市| 辉南县| 衡山县| 本溪| 栾城县| 涟水县| 恩平市| 博客| 前郭尔| 苍溪县| 萨迦县| 定襄县| 桃江县| 马公市| 临猗县| 宜兰市| 湘潭市| 商河县| 工布江达县| 商城县| 兴安盟| 铜川市| 饶河县| 崇左市| 梧州市| 凤山县| 吉首市| 玉屏| 策勒县| 张家界市|