Time of Update: 2018-12-03
1、模板的概念我們已經學過重載(Overloading),對重載函數而言,C++的檢查機制能通過函數參數的不同及所屬類的不同。正確的調用重載函數。例如,為求兩個數的最大值,我們定義MAX()函數需要對不同的資料類型分別定義不同重載(Overload)版本。//函數1.int max(int x,int y){ return(x>y)?x:y ; }//函數2.float max( float x,float y){ return (x>y)? x:y ;
Time of Update: 2018-12-03
C++的static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。一、面向過程設計中的static1、靜態全域變數在全域變數前,加上關鍵字static,該變數就被定義成為一個靜態全域變數。我們先舉一個靜態全域變數的例子,如下:#include<iostream>using namespace std;static int n; //定義靜態全域變數void fn(){n++;
Time of Update: 2018-12-03
因為是類比和實驗,很多地方我都沒有做得很完善,能省則省了,因為我採用的是對等結構,這裡講一下計算節點的結構,一個計算接點包含三個基本的功能:1)外部任務要求管理:負責接收外部請求的計算任務,並根據客戶提供的路由資訊,轉寄給目標計算節點的內部工作要求管理功能;2)內部工作要求管理:負責接收計算節點發過來的任務或命令,並調用本地的任務執行功能;當然。3)任務執行管理:這個負責具體的任務執行,包括代碼部署,代碼執行等.由於代碼的載入執行涉及到安全和卸載的問題,如果對客戶的代碼採用宿主外建立進程來執行,
Time of Update: 2018-12-03
由於這段時間和接下來的一段時間都比較忙,所以這個系列就到這裡,我把原始碼稍微整理了一下,放到了我的資源裡,大家可以去下載運行.整個架構相對比較簡單,功能有限.但作為分散式運算的入門,還是可以的.運行前要對DCSHost程式進行分布式部署,需要修改App.Config: <appSettings> <!--充當心跳服務主節點的服務配置--> <add key="CenterNodeRegisterSvc_Url" value="net.tcp://192.
Time of Update: 2018-12-03
Microsoft Visual C++虛擬多繼承 物件模型初步分析 狄駿鋒 2004/8/25 前些日子看
Time of Update: 2018-12-03
作用:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。UML結構圖:適用於以下情況:1)當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。 2)當構造過程必須允許被構造的對象有不同的表示時。抽象基類:1)Builder:這個基類是全部建立對象過程的抽象,提供構建不同組成部分的介面函數介面:1)Builder::BuildPartA,Builder::BuildPartB:是對一個對象不同部分的構建函數介面,Builder的衍生類別來具體實現.另
Time of Update: 2018-12-03
常見的不不能聲明為虛函數的有:普通函數(非成員函數);靜態成員函數;內聯成員函數;建構函式;友元函數。1、為什麼C++不支援普通函數為虛函數? 普通函數(非成員函數)只能被overload,不能被override,聲明為虛函數也沒有什麼意思,因此編譯器會在編譯時間邦定函數。2、為什麼C++不支援建構函式為虛函數? 這個原因很簡單,主要是從語義上考慮,所以不支援。因為建構函式本來就是為了明確初始化對象成員才產生的,然而virtual
Time of Update: 2018-12-03
你瞭解Linux嗎?相信現在越來越多的人會說“是”的。那麼你瞭解到何種程度呢?不可否認,目前決大多數的Linux使用者對Linux的瞭解還處於比較低級的層次,他們可能會幾條命令、會配幾種服務、會用rpm來安裝軟體、會操作KDE/Gnome介面等等,但是當他們遇到一些需要編譯安裝的軟體時,面對一些簡單的出錯資訊,他們就手足無措了。要想真正跨躍這些初級層次,你就不可能不去瞭解一些底層的東西,比如本文要講到的Linux下的C開發環境以及本文之外的其它作業系統知識。Linux
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(1)。 在C++中,有兩種class data members:static和nonstatic,以及三種class member functions:static、nonstatic和virtual.已知下面這個class Point聲明: class Point ...{public:Point(float xval);virtual ~Point();float x() const;static int PointCount();protected:
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(3)。 在visual C++ 6.0中測試如下代碼: #include "iostream"using namespace std;class X {};class Y : public virtual X {};class Z : public virtual X {};class A : public Y,public Z {};int main(){ cout<<"sizeof(X): "<<sizeof(X)<
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(4)。 ***非靜態成員函數(Nonstatic Member Functions)*** C++的設計準則之一就是:nonstatic member function至少必須和一般的nonmember function有相同的效率。也就是說,如果我們要在以下兩個函數之間作選擇: float magnitude3d(const Point3d *this) { ... }float Point3d::magnitude3d() const { ...
Time of Update: 2018-12-03
作用:定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。Factory Method 使一個類的執行個體化延遲到其子類。UML結構圖:抽象基類:1)Product:建立出來的對象的抽象基類.2)Factory建立對象的Factory 方法的抽象基類.介面函數:1)Creator::FactoryMethod:純虛函數,由衍生類別實現,建立出對應的Product.解析:在
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(6)。 ***對象的構造和解構*** 一般而言,我們會把object儘可能放置在使用它的那個程式區段附近,這樣做可以節省不必要的對象產生操作和銷毀操作。 ***全域對象*** 全域對象的靜態初始化策略包括以下幾個步驟: (1)為每一個需要靜態初始化的對象產生一個_sti_……()函數,內含必要的constructor叫用作業或inline expansions;
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記 最後一記。 第6章主要講述了執行期語意學,主要內容是關於數組的在構建和析構是如何進行的。 第7章主要講述了有關Template的相關內容。 這兩章內容散見於《Effective C++》、《More Effective C++》、《C++Primer》《C++Templates中文版》等書籍,如果感興趣請閱讀對應的書籍。 本讀書筆記主要想談一下對語意的理解。
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(2)。 default constructor僅在編譯器需要它時,才會被合成出來。 通常來說,由編譯器合成出來的default constructor是沒啥用的(trivial),但有以下幾種例外: (1)帶有“Default Constructor”的Member Class Object 如果一個class沒有任何constructor,但它內含一個member object,而後者有default
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(5)。 ***純虛擬函數*** 在設計抽象基類時,需要注意以下幾點: (1)不要將destructor聲明為pure virtual function; 如果將destructor聲明為pure virtual function,則設計者一定得定義它。因為每一個derived class destructor會被編譯器加以擴充,以靜態調用得方式調用其“每一個virtual base class”以及“上一層base
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(7)。 ***Template的“具現”行為*** template class中的任何member都只能通過template class的某個實體來存取或操作。 Point<float>::Status s; // okPoint::Status s; // error 如果我們定義一個指標,指向特定的實體,像這樣: Point<float> *ptr = 0; 由於這是一個指向class
Time of Update: 2018-12-03
[C語言]字串處理 - 以指定的字串分割字串(支援中文字元) 函數StringSplit(分割字串到一個字串數組中,其中該數組第0位為分割後字串的個數) 函數StringSplit_Struct(以定義一個新結構的方式來實現該函數)/*C代碼如下*/#include <stdio.h>/*實現方案1*//*分割字串到一個字串數組中,其中該數組第一位為分割後的個數*/char** StringSplit(const char* string,const char* split){
Time of Update: 2018-12-03
接著前面所述簡單原廠模式,簡單原廠模式符合物件導向4大原則:可維護,可複用,可擴充,靈活性高,耦合度低,但是他仍然有一個很 大的問題就是如果要增加新的產品,必須對工廠進行修改,這就違背了軟體設計的開閉原則 。 對於這種問題,我們可以使用原廠模式來解決。
Time of Update: 2018-12-03
雅虎公司C#筆試題,包括問答題和選擇題兩部分。試試看,你能回答出多少題,可以通過雅虎的考試嗎? Question 1. (單選) 在電腦網路中,表徵資料轉送可靠性的指標是 1. 傳輸率 2. 誤碼率 3. 資訊容量 4. 頻帶利用率 Question 2. (單選) 以下關於鏈式儲存結構的敘述中哪一條是不正確的? 1. 結點除自身資訊外還包括指標域,因此儲存密度小於順序儲存結構 2. 邏輯上相鄰的結點物理上不必鄰接 3. 可以通過計算直接確定第i個結點的儲存地址 4.