Time of Update: 2018-12-03
一、 記憶體模型的概念
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》(DP)兩本書。本文介紹建造者模式的實現。
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》(DP)兩本書。本文介紹面板模式和組合模式的實現。
Time of Update: 2018-12-03
在那篇《在C#中使用C++編寫的類》中我介紹了如何在C#中使用C++編寫的類。可是由於C#在使用者介面設計、資料庫儲存和XML檔案讀取等方面的優勢,有時候也會出現要在C++中使用C#編寫的類的情況。下面就用一個完整的執行個體來說明怎樣在C++中使用C#編寫的類。 比如說,現在有一個用C#編寫的DLL工程CsharpDll裡面有一個Person類:// Person.cs
Time of Update: 2018-12-03
C/C++左值性精髓(二)哪些運算式是左值,哪些是右值? 1. 左值運算式 如上一節所述,左值具有對象或不完整類型,在C++中還具有函數或參考型別,但是,並非具有上述類型的運算式就是左值,關鍵是左值必須指示一個對象,無論該對象有效或無效、完整或不完整,在C++中則包含非靜態成員函數之外的函數。例如: int i;int *p =
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》(DP)兩本書。本文介紹享元模式的實現。
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》兩本書。本文介紹橋接模式的實現。
Time of Update: 2018-12-03
Time of Update: 2018-12-03
一、C/C++物件模型的概念 這裡所說的物件模型並非指有些人可能會誤以為的Lippman在《Inside The C++ Object Model》一書中所描述的物件模型,Lippman描述的是物件導向的底層實現機制,但下面要討論的物件模型是語言層面上的資料抽象的架構,兩者是不同的,物件導向的語言設施建立在物件模型之上。在程式語言設計理論中,其實並沒有對象的概念,只有變數概念,但與C/C++的變數又不盡相同,相比之下,與之更加類似的反而是C/C++的物件模型。
Time of Update: 2018-12-03
C/C++左值性精髓(三)左值轉換 1. 從左值到右值的轉換 先看一個例子: int i = 10; 編譯器在記憶體中開闢一段具有sizeof( int )個位元組的空間,用整數10初始化,並將該空間命名為i,i屬於左值。當把i放在下面的運算式中時: i + 1;
Time of Update: 2018-12-03
C/C++左值性精髓(三)左值轉換 2. 從數組到指標的轉換 數組和指標這兩種實體,是最令初學者感到痛苦和糾結的一對“冤家”。對兩者內涵及聯絡的不斷挖掘的過程,就相當於一次思維風暴。只有徹底理解對象、類型派生方式、左值性和常量等幾種低層語言設施,才能獲得對數組和指標的完整認識。那麼,數組與指標之間千絲萬縷的聯絡究竟是什麼原因產生的呢?根本原因就在於下面要談到的從數組到指標的轉換條款。
Time of Update: 2018-12-03
C/C++左值性精髓(二)哪些運算式是左值,哪些是右值? 2. 右值運算式 C對於右值的定義是運算式的值,C中所有完整運算式的結果都是右值。所謂完整運算式(full expression),指的是這樣的運算式,它不是其它運算式或聲明符的一部分。包括條件運算式和逗號運算式等等都不產生左值,而子運算式計算產生的中間結果或臨時對象,很多人以為都是右值,但實際上,它們不一定是右值。例如: int a[ 5 ] = { 1, 2, 3, 4, 5 };int *p = a;*p = 2;
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》兩本書。本文介紹裝飾模式的實現。
Time of Update: 2018-12-03
C/C++左值性精髓(二)哪些運算式是左值,哪些是右值? 3. 函數調用運算式和強制轉換 對於函數調用運算式和強制轉換運算式的結果,在C中都屬於右值;C++由於增加了參考型別,結果為引用的函數調用運算式和強制轉換運算式都屬於左值,樣本如下: int& fun1( int & r ){ return r; } int fun2( void ){ return 10; } int i = 20; fun2( ) = 30;
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》兩本書。本文介紹觀察者模式的實現。
Time of Update: 2018-12-03
C/C++左值性精髓(二)哪些運算式是左值,哪些是右值? 4. 尾碼運算式 在運算式的左值性中,尾碼運算式是比較複雜的一種情況。尾碼運算式有很多種,這裡討論的是E1.E2和E1->E2形式的尾碼運算式。 4.1 E1.E2形式的尾碼運算式
Time of Update: 2018-12-03
本系列文章由zhmxy555(毛星雲)編寫,轉載請註明出處。 文章連結: http://blog.csdn.net/zhmxy555/article/details/8865942作者:毛星雲(淺墨)
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》兩本書。本文介紹備忘錄模式的實現。
Time of Update: 2018-12-03
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可複用物件導向軟體的基礎》兩本書。本文介紹中介者模式的實現。
Time of Update: 2018-12-03
C/C++左值性精髓(三)左值轉換 左值轉換又稱為從左值到右值的轉換。左值轉換的發生一般基於兩個原因:第一:某些運算子僅要求右值運算元,例如+、-雙目運算子,如果給予它們一個左值運算元,這時候就需要把左值轉換為右值;第二:某些指示符,例如數組和函數,由於不屬於標量類型,即所代表的實體本身不能被視為數值,這些指示符欲參與運算式計算,就必須將其數值化,數值化的結果不同於一般對象的值,而是實體地址。