Time of Update: 2018-12-06
成員函數的重載、覆蓋與隱藏成員函數的重載、覆蓋(override)與隱藏很容易混淆,C++程式員必須要搞清楚概念,否則錯誤將防不勝防。8.2.1 重載與覆蓋成員函數被重載的特徵:(1)相同的範圍(在同一個類中);(2)函數名字相同;(3)參數不同;(4)virtual 關鍵字可有可無。覆蓋是指衍生類別函數覆蓋基類函數,特徵是:(1)不同的範圍(分別位於衍生類別與基類);(2)函數名字相同;(3)參數相同;(4)基類函數必須有virtual 關鍵字。樣本8-2-1 中,函數Base::f(int)
Time of Update: 2018-12-06
#include <iostream> using namespace std; class CBase { private: int m_a; protected: int m_pp; public: CBase(int a,int pp): m_a(a),m_pp(pp){} friend ostream& operator<<(ostream &out, const CBase &b); }; ostr
Time of Update: 2018-12-06
忘了什麼時候起,腦子裡就存在了這樣的觀點: 1. 局部變數應盡量定義在代碼起始處 2. 局部變數的構造是在進入函數時進行的,其時間與局部變數聲明的位置無關 我記得這個觀點應該來自權威的書籍或某些具有豐富經驗,在我看來就如同凡人眼裏手持法杖、身著華服的法師一般神聖的開發大牛。這個觀點在當時我的看來是如此的權威,以至於素愛折騰的我也在整個大學期間未予質疑。 由於這個特性,我一直以來就有一個疑問,在RAII中,為了保證Critical
Time of Update: 2018-12-06
一.雜湊表(Hashtable)簡述在.NET
Time of Update: 2018-12-06
轉自: http://hi.baidu.com/hplonline/blog/item/8637ab4470ee268bb3b7dcaa.html 最近才發現,原來assert這麼好用啊。。。 再看看是怎麼實現的,又找到了些有趣的東西。用法: 先包含 #inlcude <assert.h> 在想用的地方給一句: assert(expression)就可以了。 expression是任意有效邏輯運算式。 比如: FILE *fp = fopen("in.txt","r") ; if (
Time of Update: 2018-12-06
---無聊的分割線---在物件導向程式中,我們經常看到一種模式就是簡單原廠模式(Simple Factory Pattern)。也許你也沒意識到原來你一直在使用簡單原廠模式,沒關係,很多時候我們往往只需要使用就可以了。簡單原廠模式根據提供給它的資料,返回幾個可能類中的一個類的執行個體。通常它返回的類都有一個共同的父類和共同的方法,但每個方法執行的任務不同,而且根據不同的資料進行了最佳化。簡單原廠模式實際上不屬於23個GoF模式,但它可以作為學習Factory
Time of Update: 2018-12-06
轉自http://www.cnblogs.com/yedaoq/archive/2011/04/29/2032597.html一、const_cast 來自MSDN的說明:一個指向對象或對象成員的指標可以顯式地轉換為帶有不同const、volatile或__unaligned屬性的同一類型。對於指標和引用,轉換結果引用的是原對象。對指向資料成員的指標,轉換結果指向原指標(轉換前)指向的對象。通過轉換得到的指標、引用及(指向資料成員的)指標來進行寫操作可以導致未定義的行為——取決於引用對象的類型。
Time of Update: 2018-12-06
開始實習之後,才發現自己是多麼地菜。還有好多東西還要去學習。公司很好,還可以幫你買書。有一天隨口問了一下上司D,代碼規範上面有什麼要求。然後D在Amazon上面找到了這本書《C#編程風格(The Elements of C#
Time of Update: 2018-12-06
最近打算針對iPhone、iPod touch和iPad開發一些應用,所以,需要開始學習Objective C(蘋果推出的類似C語言的開發語言)。由於蘋果的自我封閉的產業鏈發展模式(從晶片、機器、開發語言、終端產品、服務)的限制,要想開發針對蘋果 iPhone等產品的應用程式,就需要用Mac機器,在Xcode的IDE上使用Objective C語言開發。Mac機器就不用說了,那比PC機器要貴不少(當然性價比還是很高的),所以,要想廉價方式學習Objective
Time of Update: 2018-12-06
C#
Time of Update: 2018-12-06
首先吐糟一下今天杭州的天氣,真是太熱了!雖然沒有妹子跟我約會,但宅在方寸大的窩裡,也是煩躁不已!接上一篇《C#基礎之基本類型》類型和成員基礎在C#中,一個類型內部可以定義多種成員:常量、欄位、執行個體構造器、類型構造器(靜態構造器)、方法、操作符重載、轉換操作符、屬性、事件、類型。類型的可見度有public和internal(預設)兩種,前者定義的類型對所有程式集中的所有類型都可見,後者定義的類型只對同一程式集內部的所有類型可見: public class PublicClass { }
Time of Update: 2018-12-06
適配器模式適配器模式是很好理解的模式了,生活中也非常常見,什麼插頭2口轉3口,什麼USB轉PS2,這都算是適配器模式。說白了,就是如果有一些東西提供的介面你很像用,但是你手頭沒有好的介面使用它,這個就需要一個適配器,將你需要的介面轉換成你所擁有的介面。這樣的好處也是顯而易見,就是你不用改變你現在所擁有的介面,保證你在任何地方的用法都不需要修改,然後底層的實現由適配器調用需要的介面來具體實現。 常見的情境使用第三方庫的時候,第三方的庫肯定不能適用所有的系統,所以需要一個適配器來轉換。 優點1.屏蔽
Time of Update: 2018-12-06
條款13: 以對象管理資源1.為防止資源泄漏,使用RAII對象,它們在建構函式中獲得資源, 在解構函式中釋放資源2.兩個常用的RAII classes: tr1::shared_ptr和auto_ptr,後者複製會使被複製物指向null RAII (Resource Acquisition is Initialization): 資源取得時機便是初始化時機------以對象管理資源。auto_ptr:不能讓多個auto_ptr指向相同對象,否則對象會刪除多次,未定義。
Time of Update: 2018-12-06
條款01:視C++為一個語言聯邦 : C, Object-Oriented C++, Template C++, STL條款02:盡量以const,enum,inline 替換#define:1.對於單純常量,最好以const對象或enum替換#define2.對於形似函數的宏(macros),最好改用inline函數替換#define#define ASPECT_RATIO 1.653const double AspectRatio = 1.653;
Time of Update: 2018-12-06
【轉載】http://www.blogjava.net/bacoo/archive/2009/06/22/283480.html對模板特化的理解:特化整體上分為全特化和偏特化,這一點大家都沒有什麼置疑,但是細分它們各包括哪幾種狀態就很難界定了,而且很多權威的書上都不一致,管它呢,反正我們能會用各種特化就可以了。下面就談談我個人對特化的劃分和定義:所謂特化,就是將泛型的東東搞得具體化一些,從字面上來解釋,就是為已有的模板參數進行一些使其特殊化的指定,使得以前不受任何約束的模板參數,或受到特定的修飾
Time of Update: 2018-12-06
C++中好像不區分內部類與嵌套類兩個名詞。內部類與嵌套類都是指在類中定義類。局部類是指在函數中定義類。(c++不能在函數中定義函數。c++在類中定義的函數也就是成員函數。)(c++內部類與java內部類最大的區別就是:c++的內部類對象沒有外部類對象的指標,不能訪問外部類對象的非靜態成員;java的非靜態內部類對象有外部類對象的指標,能訪問外部類對象的非靜態成員。)
Time of Update: 2018-12-06
在C++ 11中,可以使用非同步任務async和future配合來完成一些輕量級的並發編程工作。async使用比較簡單,只需要傳入要並發執行的函數即可。future用於佔位,以擷取並發執行的函數的結果;調用其get介面時,將等待並發任務結束,並返回結果。下面的代碼示範了async和future的基本用法:1 int f() { return 100; }2 future<int> fu = async(f);3 int nRet = fu.get();
Time of Update: 2018-12-06
unique_ptr是一個獨享所有權的智能指標,它提供了一種嚴格語義上的所有權,包括: 1、擁有它所指向的對象。 2、無法進行複製構造,也無法進行複製賦值操作。也就是說,我們無法得到指向同一個對象的兩個unique_ptr。但是可以進行移動構造和移動賦值操作。 3、儲存指向某個對象的指標,當它本身被刪除釋放的時候(比如,離開了某個範圍),會使用給定的刪除器釋放它指向的對象。
Time of Update: 2018-12-06
shared_ptr是一個引用計數智能指標,用於共用對象的所有權。它可以從一個裸指標、另一個shared_ptr、一個auto_ptr、或者一個weak_ptr構造。還可以傳遞第二個參數給shared_ptr的建構函式,它被稱為刪除器(deleter)。刪除器用於處理共用資源的釋放,這對於管理那些不是用new分配也不是用delete釋放的資源時非常有用。shared_ptr被建立後,就可以像普通指標一樣使用了,除了一點,它不能被顯式地刪除。shared_ptr的比較重要的介面如下:
Time of Update: 2018-12-06
bind是一組用於函數綁定的模板。在對某個函數進行綁定時,可以指定部分參數或全部參數,也可以不指定任何參數,還可以調整各個參數間的順序。對於未指定的參數,可以使用預留位置_1、_2、_3來表示。-1表示綁定後的函數的第1個參數,_2表示綁定後的函數的第2個參數,其他依次類推。 bind可以綁定到普通函數、函數對象、類的成員函數和類的成員變數。下面分別進行介紹。 1、普通函數1 void nine_arguments(int i1,int i2,int i3,int