原创 M3:不要對數組使用多態

//Item M3:不要對數組使用多態 #include<iostream> using namespace std; class BST { public: BST(){} BST(int data):data(data) {

原创 條款47:請使用traits classes 表現類型信息

/*條款47:請使用traits classes 表現類型信息*/ //Traits 是一種技術,一個C++程序員共同遵守的協議,它的要求之一是:它對內置類型和用戶自定義類型的表現必須一樣好 //advance 用來將某個迭代器移動某個給

原创 GetPrivateProfileInt 讀取配置文件

#include<iostream> #include<afxwin.h> using namespace std; void main() { char buffer[1024]={0}; GetModuleFileName(Ge

原创 _T(x) _TEXT(x) L 代表什麼?

首先  <tchar.h>中    #ifdef  _UNICODE                     ....                     #define __T(x)      L ## x  //替換 #

原创 Visual Studio 路徑宏

 說明 $(RemoteMachine) 設置爲“調試”屬性頁上“遠程計算機”屬性的值。有關更多信息,請參見更改用於 C/C++ 調試配置的項目設置。 $(References) 以分號分隔的引用列表被添加到項目中。 $(Config

原创 條款48:認識template元編程

/*條款48:認識template元編程*/ // Template metaprogramming (TMP,模板元編程):是以C++寫成,執行於C++編譯器內的程序 #include<iostream> using namespace

原创 簡單的 winsocket TCP通信

//服務器 #include<iostream> #include<WinSock2.h> // socket 所需要的頭文件 #pragma comment(lib,"WS2_32.lib")//

原创 條款55:讓自己熟悉Boost

/*條款55:讓自己熟悉Boost*/ /* boost是一個c++開發者集結的社羣 如果你想把你準備好的程序庫加入boost裏要考慮以下內容 1 這一份設計和實現有多好? 2 這些代碼可跨編譯器和操作系統嗎? 3 這個程序庫有可能被它所

原创 條款53:不要輕忽編譯器的警告

/*條款53:不要輕忽編譯器的警告*/ #include<iostream> using namespace std; class B { public: virtual void f()const; }; class D :publi

原创 條款51:編寫new和delete時需固守常規

/*編寫new和delete時需固守常規*/ //非附屬對象必須有獨立的大小  #include<iostream> using namespace std; class Base{ public: static void*operat

原创 條款49:瞭解new-handler的行爲

/*條款49:瞭解new-handler的行爲*/ #include<iostream> using namespace std; //operator new 當無法滿足某一內在分配需求時,它會拋出異常,返回NULL指針,某些舊式編譯器

原创 條款44:將與參數無關的代碼抽離template

/*條款44:將與參數無關的代碼抽離template*/ //共性與變性分析,把兩個類或函數中本質相同的代碼進行抽離成另一個相同類別的結構中 //在模板代碼中,重複的部分是隱晦的 //下面是一個支持矩陣運算的例子 #include<ios

原创 條款52:寫了placement new 也要寫Placement delete

/*條款52:寫了placement new 也要寫Placement delete*/ #include<iostream> using namespace std; //class Widget {}; class Widget {

原创 c# 委託

using System; using System.Collections.Generic; using System.Linq; using System.Text; //委託是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數

原创 條款46:需要類型轉換時請爲模板定義非成員函數

/*條款46:需要類型轉換時請爲模板定義非成員函數*/ #include<iostream> using namespace std; template<typename T> class Rational{ public: Ratio