新聞中心
C++作為一種編程語言,僅僅是它的語法、特性、標準類庫就已經(jīng)是一項非常難理解的東西了,所以在開始接觸時,一定要打下良好的代碼,這樣才會給今后的學習帶來便捷的道路。下面說一下C++風格與技巧問題。

創(chuàng)新互聯(lián)專注于莎車網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供莎車營銷型網(wǎng)站建設(shè),莎車網(wǎng)站制作、莎車網(wǎng)頁設(shè)計、莎車網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造莎車網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供莎車網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
早在1981年,我就指出,通過將我必須顯式地跟蹤的對象的數(shù)量從幾萬個減少到幾打,為了使程序正確運行而付出的努力從可怕的苦工,變成了應(yīng)付一些可管理的對象,甚至更加簡單了。如果你的程序還沒有包含將顯式內(nèi)存管理減少到最小限度的庫,那么要讓你程序完成和正確運行的話,最快的途徑也許就是先建立一個這樣的庫。
- #include
- #include
- using namespace std;
- struct S {
- S() { cout << "make an S\n"; }
- ~S() { cout << "destroy an S\n"; }
- S(const S&) { cout << "copy initialize an S\n"; }
- S& operator=(const S&) { cout << "copy assign an S\n"; }
- };
模板和標準庫實現(xiàn)了容器、資源句柄以及諸如此類的東西,更早的使用甚至在多年以前。異常的使用使之更加完善。如果你實在不能將內(nèi)存分配/重新分配的操作隱藏到你需要的對象中時,你可以使用資源句柄(resource handle),以將內(nèi)存泄漏的可能性降至最低。
這里有個例子:我需要通過一個函數(shù),C++風格與技巧在空閑內(nèi)存中建立一個對象并返回它。這時候可能忘記釋放這個對象。畢竟,我們不能說,僅僅關(guān)注當這個指針要被釋放的時候,誰將負責去做。
使用資源句柄,這里用了標準庫中的auto_ptr,使需要為之負責的地方變得明確了。在更一般的意義上考慮資源,而不僅僅是內(nèi)存。如果在你的環(huán)境中不能系統(tǒng)地應(yīng)用這些技巧(例如,你必須使用別的地方的代碼。
或者你的程序的另一部分簡直是原始人類(譯注:原文是Neanderthals,尼安德特人,舊石器時代廣泛分布在歐洲的猿人)寫的,如此等等),那么注意使用一個內(nèi)存泄漏檢測器作為開發(fā)過程的一部分,或者插入一個垃圾收集器(garbage collector)。
我為什么在捕獲一個異常之后就不能繼續(xù)?換句話說,C++為什么不提供一種簡單的方式,讓程序能夠回到異常拋出點之后,并繼續(xù)執(zhí)行?主要的原因是,如果從異常處理之后繼續(xù),那么無法預(yù)知擲出點之后的代碼如何對待異常處理,是否僅僅繼續(xù)執(zhí)行,就象什么也沒有發(fā)生一樣。
異常處理者無法知道,在繼續(xù)之前,有關(guān)的上下文環(huán)境(context)是否是“正確”的。要讓這樣的代碼正確執(zhí)行,拋出異常的編寫者與捕獲異常的編寫者必須對彼此的代碼與上下文環(huán)境都非常熟悉才行。這樣會產(chǎn)生非常復(fù)雜的依賴性,因此無論在什么情況下,都會導(dǎo)致一系列嚴重的維護問題。
當我設(shè)計C++的異常處理機制時,我曾經(jīng)認真地考慮過C++風格與技巧允許這種繼續(xù)的可能性,而且在標準化的過程中,這個問題被非常詳細地討論過。請參見《C++語言的設(shè)計和演變》中的異常處理章節(jié)。
網(wǎng)站欄目:C++風格與技巧說明介紹
本文鏈接:http://www.5511xx.com/article/djshjeo.html


咨詢
建站咨詢
