Time of Update: 2018-07-29
原文參考書籍:《Design Patterns Explained Simply》 一、定義 根據儲存的原型尋找需建立對象的類型,再通過拷貝(clone)依據類型建立新的對象。 二、結構 三、要點 原型模式中,Client並不知道要複製對象的實際類型,只需知道基類類型即可。 複製對象比直接建立對象的優點在於,複製是將原有對象的行為屬性帶到了新的對象中。 C++沒有複製方法,要複製一個對象,需要藉助拷貝建構函式(Copy
Time of Update: 2018-07-29
什麼是位元運算 位元運算符按二進位進行運算,這些運算子只能用於整數類型的操作。如:char,short,int,long 通過位元運算符來擷取高位值和低位值 int a=0x1234; int high,low; high = (a>>8) &0x00ff; low = a & 0x00ff; 左移運算子和右移運算子(<<和>>)
Time of Update: 2018-07-29
函數名與函數指標 一 通常的函數調用 一個通常的函數調用的例子: //自行包含標頭檔 void MyFun(int x); //此處的申明也可寫成:void MyFun( int ); int main(int argc, char* argv[]) { MyFun(1
Time of Update: 2018-07-29
How to Program in C++ http://cs.fit.edu/~mmahoney/cse2050/how2cpp.html How to Program in C++ You may copy this file for noncommercial use. The latest version is located
Time of Update: 2018-07-29
2008年07月28日 22:22:02 關於嵌入開發中ARM的C代碼最佳化 下面是網路上收集關於ARM的C代碼最佳化方法,在嵌入開發中應該有用: [聲明:以下方法非本人發現和總結,均為有心之人無私貢獻,謝謝他們的勞動與分享。] ======================================================= C資料類型 1.
Time of Update: 2018-07-29
fopen 函數原型 FILE * fopen(const char *path,cost char *mode) 作用:開啟一個檔案,返回指向該檔案的指標 參數說明:第一個參數為欲開啟檔案的檔案路徑及檔案名稱,第二個參數表示對檔案的開啟檔案 註:mode有以下值: r:唯讀方式開啟,檔案必須存在 r+:可讀寫,必須存在 rb+:開啟二進位檔案,可以讀寫 rt+:開啟文字檔,可讀寫
Time of Update: 2018-07-29
#include<stdio.h>#include<stdlib.h>#define N sizeof(stacknode)//結點所佔位元組數 N//定義結構體typedef int datatype;typedef struct stacknode{datatype data;struct stacknode *next;}stacknode;//定義棧頂typedef struct {stacknode *top;int count;//計數用}linkstack;
Time of Update: 2018-07-29
一個非常簡單的情形 非侵入的版本 可序列化的成員 衍生類別 指標 數組 STL容器 類的版本 把serialize拆分成save/load 檔案 輸出檔案(archive)類似於輸出資料流(stream)。資料能通過<< 或 & 操作符儲存到檔案(archive)中: ar << data; ar & data; 輸入檔案(archive)類似於輸入資料流(stream)。資料能通過>> 或
Time of Update: 2018-07-29
在C++中,vector是一個十分有用的容器,下面根據多篇文章對這個vector做一下總結。 1.檔案包含 首先在程式開頭處加上#include以包含所需要的類檔案vector,還有一定要加上using namespace std; #include <vector>using namespace std; 2.變數聲明 例2.1: 聲明一個int向量以替代一維的數組: vector
Time of Update: 2018-07-29
聲明: 1、本博文主要整理自《C++ Primer》和《STL源碼剖析》這兩本經典書籍。同時,也參考了網路中不少優秀部落格,對這些部落格的作者表示感謝。 2、由於博主能力有限,對於一些容器的用法可能尚未進行深入研究。因此,本博文若有錯誤和不足之處,歡迎大家批評指正。 3、本博文僅作學術交流只用,無任何其他用途。 言歸正傳,下面開始介紹C++中的STL容器。 1、容器的概念 Standard Template Library,標準模板庫。
Time of Update: 2018-07-29
C++類中各種不同類型成員根據是否static 、是否const類型的初始化方法不盡相同,寫代碼時經常搞亂,網上搜了一下資料,全部總結一下。一、例子 -----------------Test.h----------------------------#pragma onceclass Test{private : int var1;// int var11= 4; 錯誤的初始化方法 const int var2 ;// const int
Time of Update: 2018-07-29
轉自:http://blog.csdn.net/chenyujing1234/article/details/7558185 最近做了C#軟體,發布給客戶用時,發現客戶運行不起來,原因是客戶電腦上沒有裝Frame Work庫. 那麼我們得把exe打包發布。發布的安裝檔案相當的大,以FrameWork為例達到了200多M。這就是為什麼 有的應用程式只有1M多,可是發布時卻做成了1G。 請注意以下的第五步.
Time of Update: 2018-07-29
/* 楊輝三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */ /*楊輝三角11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 */#include "stdio.h"main(){ int a[11][20],i,j; //初始化 for(i=0;i<11;i++) for(j=0;j<20;j++)
Time of Update: 2018-07-29
按址傳遞中,引用形參是實參變數的一個引用,前邊也講過,引用只是相當於一個別名,系統不會再為其分配儲存空間,所以此時,函數中改變形參後,實參值也會相應改變。按值傳遞只是將實參的值傳遞給形參變數,參與運算,因為是在不同的儲存單元,所以實參值不會受影響。 值傳遞(按值傳遞) 1.實參值傳遞給相應形參 2.實參地址傳遞給相應形參 比如:數組、指標。
Time of Update: 2018-07-29
請看以下代碼: class Concrete{public:private:int val;char c1;char c2;char c3;};我在我的電腦上運行,求得的類Concrete的大小為8byte,我想還是符合我們的預期(val:4byte, c1 : 1byte, c2 : 1byte, c3: 1byte),在加上位元組對齊的一個位元組,剛好是8byte。 那如果我為了酷炫,改成以下的繼承方式,對於空間會有什麼影響呢。 class Concrete1{
Time of Update: 2018-07-29
上一篇已經分析了基本結構體、C++簡單對象和加上一般的繼承之後的各種情況,這篇文章將主要在有虛繼承時,C++對象的記憶體又是怎樣分配的。 虛繼承 虛繼承解決了從不同途徑繼承的類具有共同基類的問題,使得共同基類只有一份拷貝。解決了二義性的問題,也節省了記憶體。 虛繼承的一般類圖如下所示: sizeof(Derived) = 40 位元組。經過分析,可以得到Derived類在記憶體中的儲存結構示意圖為: 總結: 各部分在記憶體中的存放順序為先父類、後子類、
Time of Update: 2018-07-29
硬體設計師最常見的工作內容是通過寫代碼來測試硬體。這10個C語言技巧(C語言仍然是常見的選擇)可以協助設計師避免因基礎性錯誤而導致某些缺陷的產生並造成維護方面的困擾。
Time of Update: 2018-07-29
利用C++實現外掛程式系統 外掛程式機制能夠方便地擴充已有應用程式的功能。用C++實現外掛程式機制的基本思路是:應用程式提供介面,由使用者或第三方實現這些介面,並編譯出相應的動態連結程式庫(即外掛程式);將所有外掛程式放到某個特定目錄,應用程式運行時會自動搜尋該目錄,並動態載入目錄中的外掛程式。 應用程式提供介面 為了實現功能擴充,應用程式必須向外掛程式提供介面。在base.h中定義一個抽象類別Base作為介面: #ifndef BASE_H_#define
Time of Update: 2018-07-29
C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Time of Update: 2018-07-29
C語言中的ASSERT(斷言)宏是嵌入式軟體開發人員可以使用的最好的調試工具之一。雖然ASSERT功能強大,但我很少看到它被實施,並且在一些使用它的案例中,它的實施要麼是有瑕疵的要麼是不正確的。以下一些技巧將不僅能夠協助闡明在何時、何地使用ASSERT,而且還能闡明如何開始正確使用它。 技巧1:記住ASSERT的定義 對許多開發人員來說,斷言是一個令人困惑的話題,因為它們的許多使用方式與其設計初衷背道而馳。我見到的最清晰的斷言定義是這樣的: