C++ RTTI: 2個宏實現“根據對象名建立對象”

1. 問題提出:C++ RTTI缺乏一些運行時資訊,無法根據對象名直接建立對象。所以MFC為了實現序列化,從頭構造了自己的RTTI資訊,並定義了一整套宏。具體可以參考MFC源代中一下類和宏的實現:CRuntimeClass, CObject, DECLARE_DYNAMIC, IMPLEMENT_DYNAMIC2. 需求:個人正在寫一個做整合測試的工具,有一個設定檔,用於指定哪些CASE需要被測試到,內容大致如下:<ut>     <case name="case1"/>

C++ Template: 模板參數傳遞中的切片問題

Effective Standard C++ Library: Explicit Function Template Argument Specification and STL A New Language Feature and Its Impact on Old Programming Techniques       Klaus Kreft and Angelika

用C++實現一個XML parser的必要工作。

考慮一個完整的XML Parser一般由幾部分組成:必要組件:1. DOM 介面定義,以及DOM MODEL的實現。2. 一個XML詞法分析器,用於將XML字元流轉換成TOKEN流。3. 一個XML PARSER,將TOKEN流組織成DOM MODEL.4. 一套在DOM NODE中遍曆的資料結構和演算法,NodeIterator,TreeWalker.5. 一個DTD的詞法分析器和DTD PARSER.6. 一個XPATH運算式語言的編譯器,將XPATH運算式編譯成AST樹。7.

孟岩的C++培訓課

        因公司安排參加了2天C++的培訓,孟岩老師的主講。        課講的很好,第一天是一些C++的一些原理,如對象記憶體布局,多重繼承,等等,第二天主要是STL和範型。內容不少,講的也很透徹,很久沒有這麼探究C++的理論,咋聽之下,感覺還是不錯的。        唯一的遺憾是,好像現在C++領域除了這些東西以外,好像真的是找不到新的課題了。關於C++的物件版面配置,在lipman的書裡,早就講的清清楚楚了;STL方面的好書更是不少;模板吧,<<Modern C++

封裝C++ enum ,並設定enum 的名字

 /*! * \b author: Peng Futian  * * \b Date: 2011-07-30 * * \b Description: 將enum封裝在struct中,並且設定enum的名字 * 用法: *  類型定義,為了與數組中的名字對應,元素值應該用系統預設的設定,從0開始 *  DECLARE_MV_ENUM(FileShare, 10) *   Read, *   Write, *  END_DECLARE_MV_ENUM() * * 

zookeeper 3.3.3 C 編譯的問題及解決

zookeeper 3.3.3 在Redhat 上編譯時間,會有下面的錯誤 ../../../include/zookeeper/recordio.h:70: error:expected unqualified-id before ‘__extension__’../../../include/zookeeper/recordio.h:70: error:expected `)' before ‘__extension__’../../..

長度為0的數組 —— C語言的非標準用法

      在標準C和C++中,長度為0的數組是被禁止使用的。不過在GNUC中,存在一個非常奇怪的用法,那就是長度為0的數組,比如Array[0];很多人可能覺得不可思議,長度為0的數組是沒有什麼意義的,不過在這兒,它表示的完全是另外的一層意思,這個特性是不可移植的,所以,如果你致力於編寫可移植,或者是稍稍需要跨平台的代碼,這些Trick最好還是收合來的好。在GNU的指南中,它是如此寫道: struct line { int length; char contents[0];};//

C實現二叉樹BTree基本操作

 /*** @file GM_BTree.h* @brief * @author Don Hao* @date 2011-8-22 21:51:35* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company:

C/C++實現冒泡法排序

  /*** @file GM_BSort.h* @brief 冒泡排序* @author Don Hao* @date 2011-8-23 19:55:56* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company: <

一起來學REST(12.1)——C#中使用REST

原文地址:http://rest.elkstein.org/Learn REST: A Tutorial 發送HTTP GET請求兩個主要的類是System.net中的HttpWebRequest和HttpWebResponse。下面的方法發送一個請求,並且返回一個長字串:static string HttpGet(string url) { HttpWebRequest req = WebRequest.Create(url) as

【C++】fwrite與fread

fwrite函數函數功能:寫資料區塊函數調用形式:fwrite(buffer, size, count, fp);函數說明:fread函數函數功能:讀資料區塊函數調用形式:fread(buffer, size, count, fp);函數說明:/*fwriteDemo*/#include <stdio.h>#include <iostream>int main(){FILE *fp;char buff[100] = "Hello World.";fp =

C/C++實現插入排序

 /*** @file GM_ISort.h* @brief 實現插入排序* @author Don Hao* @date 2011-8-22 19:46:19* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company:

C/C++實現快速排序

 /*** @file GM_QSort.h* @brief 實現快速排序* @author Don Hao* @date 2011-8-21 22:31:06* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company:

C++的尷尬

c++是一種優秀的語言,我們從語言的角度上面來講,這是一個很多人都比較同意的說法,所以,我也選擇了c++.  

c/c++經典積累

用C實現自己的memcpy先後給出一段代碼 #include <stdio.h>#include <iostream>using namespace std;void* mymemcpy( void *dest, const void *src, size_t count ){    char* pdest = static_cast<char *>(dest);    const char* psrc = static_cast<const char

c++函數重載二義性

例一:#include <stdio.h>void f(int a);void f(long a);void f(char a);int main(int argc,char *argv[]) { double value = 65.01; f(value); return 0; }void f(int a){ printf("int value=%d/n", a);}void f(long a){ printf("long value=%d/n", a);}void f(char

linux安裝xml開發包xerces-c

xerces介紹Xerces-C++ 的前身是 IBM 的 XML4C 項目。XML4C 和 XML4J 是兩個並列的項目,而 XML4J 是 Xerces-J——Java 實現——的前身。IBM 將這兩個項目的原始碼讓與 Apache 軟體基金會(Apache Software Foundation),他們將其分別改名為 Xerces-C++ 和 Xerces-J。這兩個項目是 Apache XML 組的核心項目(如果看到的是“Xerces-C”而不是“Xerces-C++”,也是同一個東西,

通過函數名字串調用函數【C語言版】

問題引入在C中,函數先定義,後使用。舉個簡單的例子/************************* add by oscar999************************/func1(){ printf("this is func1!\n");}void main(){ func1();}定義了一個簡單的函數func1, 調用的時候只需要"函數名()"

Socket 執行個體之透析java,C#的互操作

    java,c#程式設計語言編寫的程式之間是可以互相操作的。用java寫的Socket聊天功能的服務端和用戶端之間,和用C#編寫的Socket聊天功能的服務端和用戶端之間是可以相互連信的。簡單的說就是,把C#的服務端跑起來的話,用java的用戶端同樣可以和這個服務端通訊。這個觀點其實並不難理解,只是我們在使用程式設計語言的時候,一般都比較會被程式設計語言的API所限制。 

C#DataViewRowState一個資料表的資料狀態樣本

/**//**模組名稱:行狀態展示*實體名稱:*建立者:Fung*建立時間:*修改者:*修改時間:2006-12-18*說明:本程式為C#2005控制台程式; *     示範了資料表內資料變化的各種狀態。*/using System;using System.Collections.Generic;using System.Text;using System.Data;namespace DataRowState...{    class Program    ...{        stat

總頁數: 4314 1 .... 2961 2962 2963 2964 2965 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.