原创 C++ 深拷貝和淺拷貝 (轉載,感謝作者)

對於普通類型的對象來說,它們之間的複製是很簡單的,例如:int a=88;int b=a; 而類對象與普通對象不同,類對象內部結構一般較爲複雜,存在各種成員變量。下面看一個類對象拷貝的簡單例子。   #include <iostream>

原创 references count 以及copy on write

    產生一個reference-counted String class 並不困難,但是必須注意許多細節。   比如 copy-on-write          Pointers,References,以及copy-on-Write

原创 關於windows 僞句柄

      《windows核心編程》裏提到了“僞句柄”一詞,故名思議,它並不是真的句柄,有時候不會達到你想要的效果。邊看代碼,邊解釋 代碼如下:      // 僞句柄.cpp : 定義控制檯應用程序的入口點。 // #include

原创 C++ Smart Pointers 和“與繼承有關的”類型轉換

     我們真正想要知道的是如何能夠使“smart pointer classes的行爲”在“與繼承相關的類型轉換”上,能夠和dumb pointers一樣。答案很簡單:不能夠。Daniel Edelson 指出:smart point

原创 C++ 單例模式的具體實現

  C++單例模式的實現方法多樣化,應用比較靈活,大家可以根據自己編程中不同的需求來決定使用哪種方法來實現這一功能。C++是款應用非常廣泛的計算機編程語言。它支持多種程序設計風格,其中包括對面向對象設計的支持。今天爲大家介紹的C++單

原创 C++指向函數的指針做函數的形參

#include<iostream> #include<vector> #include<string> using namespace std; int fun(const int); //int fun(const int&,con

原创 C++ const引用詳解

文章轉自 http://blog.csdn.net/k2eats/archive/2008/06/12/2541790.aspx (1)       在實際的程序中,引用主要被用做函數的形式參數--通常將類對象傳遞給一個函數.引用必須

原创 C++ handle classes

C++中,使用handle classes(句柄類)的目的,是爲了降低文件之間的編譯依存關係。 摘自網上的一段話:        需要句柄類的背景:  1)在對安全要求很高的領域,即使核心實現已經封閉在庫中不可見,但頭文件中變量定義仍

原创 asser斷言 (轉載)

assert宏的原型定義在<assert.h>中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:#include <assert.h>void assert( int expression ); assert的作用是現計算表達

原创 C++primer 習題9。25答案錯誤,正確答案如下

#include<iostream> #include<vector> #include<list> using namespace std; int main() { int ia[]={0,1,1,2,3,5,8,13,21,55

原创 non-local static 變量初始化順序不確定,帶來的問題

    所謂static對象,其壽命從被構造出來直到程序結束爲止,因此stack和heap-based對象都被排除。這種對象包括global對象、定義於namespace作用域內的對象,classes內、在函數內、以及在file作用域內被

原创 C++ virtual constructors virtual copy constructors 以及non-memeber functions的行爲虛化

    C++中,所謂的 virtual constructors是某種函數,視其獲得的輸入,可產生不同類型的對象。-----《more effective c++》   virtual constructors 在許多情況下有要有用,其

原创 More effective c++ 11(禁止異常(exceptions)流出destructors之外)

    當對象被exception處理機制------也就是exception傳播過程中的stack------unwinding(棧展開)機制-----銷燬。     當destructor被調用時,可能有一個exception正在作用

原创 win api 路徑操作函數

一個朋友整理的放在他網站上lilu.name,用的時候看的也方便,就貼過來,表示感謝... 路徑截斷與合併函數       PathRemoveArgs 去除路徑的參數 PathRemoveBa

原创 test

#define GDIPVER 0x0110 //定義高版本的GDI+(1.1) #include <windows.h> #include <ObjIdl.h> #include <stdio.h> #