13. Use objects to manage resources.總結:第一,為了防止資源流失,請使用RAII對象,它們在建構函式中獲得資源並在西溝函數中釋放資源。第二,兩個常被使用的RAII class分別是tr1::shared_ptr和auto_ptr。前者通常是較佳選擇,因為其copy行為比較直觀。若選擇auto_ptr,複製動作會使它(被複製物)指向null。14.Think carefully about copying behavior in
18. Make interfaces easy to use correctly and hard to use incorrrectly.總結:第一,好的介面很容易被正確使用,不容易被誤用。你應該在你的所有介面中努力達成這些性質。第二,“促使正確使用”的辦法包括介面的一致性,以及與內建類型的行為相容。第三,“阻止誤用”的辦法包括建立新類型、限制類型上的操作,束縛對象值,以及消除客戶的資源管理責任。第四,tr1::shared_ptr支援定製型刪除器(custom
26. Postpone variable definitions as long as possible.總結:儘可能延後變數定義式的出現。這樣做可增加程式的清晰度並改善程式效率。批註:純C語言此處有衝突,C語言要求變數定義出現在代碼快的開始部分。27. Minimize casting.1)const_cast 通常被用來將對象的常量性轉除(cast away the constness) 。它也是唯一有此能力的 C++-style
49. Understand the behavior of the new-handler.總結:第一,set_new_handler允許客戶指定一個函數,在記憶體配置無法獲得滿足時被調用。第二,Nothrow new是一個頗為局限的工具,因為它只適用於記憶體配置;後繼的建構函式調用還是可能拋出異常。50. Understand when it makes sense to replace new and delete.替換編譯器提供的operator new或operator
以前沒有怎麼注意C++繼承時候基類引用子類或基類指標指向子類。現在寫個小程式來測試下這種結果。// TestCPP.cpp : Defines the entry point for the console application.#include"stdafx.h"#include"iostream"using namespace std;class B{public: virtual void print() { cout<<"this is
5.Know what functions C++ silently writes and calls.總結:編譯器可以暗自為class建立default建構函式、copy建構函式、copy assginment操作符,以及解構函式。這些函數都是public的,並且是inline的。6.Explicitly disallow the use of compiler-generated functions you to not
WinForm下的ComboBox預設是以多行文本來設定顯示列表的, 這通常不符合大家日常的應用, 因為大家日常應用通常是鍵/值對的形式去綁定它的.那麼用索引值對的形式如何做?因為Combox的每一個項的值是一個object, 實際上就是一個鍵/值對.我用的是下面這個類的執行個體作為它的一個項:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
SqlConnection con = new SqlConnection("Data Source=192.168.1.101;Initial Catalog=sun;Persist Security Info=True;User ID=sa;Password=123"); string time = DateTime.Now.ToString("yyyyMMddHHmmssfff"); string ab = time;