Time of Update: 2018-12-06
一 const基礎如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況:int b = 500;const int* a = &b; [1]int const *a = &b; [2]int* const a = &b; [3]const int* const a = &b; [4]如果你能區分出上述四種情況,那麼,恭喜你,你已經邁出了可喜的一步。不知道,也沒關係,我們可以參考《Effective
Time of Update: 2018-12-06
操作符重載(小原則) 轉載自:http://blog.csdn.net/lingyin55/archive/2009/07/05/4322997.aspx一.運算子多載的含義與定義方式l C++已有的運算子只適合處理C++的基礎資料型別 (Elementary Data Type)。l C++允許重新定義已有的運算子(運算子多載),以便它能處理常式員定義類型(類類型)。l
Time of Update: 2018-12-06
執行個體對比三個樣本程式,比較C++引用與指標的區別引用是C++中的概念,引用和指標很容易混淆一起。一下程式中,n是m的一個引用(reference),m是被引用物(referent)。int m;int &n =
Time of Update: 2018-12-06
如果類的成員變數是特定類和自訂結構,使用該類名或結構作為操作符進行重載。(當然是基本類型也可以,不過實用性不強,只會降低代碼可讀性。) 如下,一個CPerson,強行轉換為hand,也可以使用。 類似於現實,我們只會對某個實物的具體特徵表示強烈的興趣,也就是特徵聚焦的意思。如HR部門只會關注一個應聘者的skill。 當然在實際用途中,過度使用這種子類轉換,只會降低代碼可讀性。 另外如類中有多個同類型的成員,這樣的轉換讓人莫名其妙。 執行個體代碼: // Person.h:
Time of Update: 2018-12-06
CC的HPC體驗上篇說到CC終於換U有了兩台支援虛擬化的機器,開始尋思折騰hpc群集啥的,看看有沒有vmware的高可用先是安裝了兩台HPC,並且安裝了HPC PACK這個HPC群集工具,還安裝過HPC R2這個新的Community Technical Preview,可是沒發現HPC群集有什麼出彩的功能,有點無奈了,木有什麼可喜的功能和突破Hpc pack的建立是由前端節點和其他電腦節點群組成
Time of Update: 2018-12-06
VARIANT變數是COM組件之間互相通訊的重要的參數變數之一,它可以容納多種不同的類型,如short、long、double等,包括各類指標和數組。組件之間的互相調用是比較耗時的,尤其帶當組件位於不同進程中時,因此,減少傳遞次數是提高效率的一種有效方法。其中,Excel表格的操作就可能涉及到大量資料,一次傳遞一個二維數組是提高對Excel表的操作效率。下面以兩種不同方式來實現VARIANT二維數組的操作。1、使用SAFEARRAY實現二維數組SAFEARRAY安全陣列可以實現多維陣列,SAFE
Time of Update: 2018-12-06
許多初學 VC 的朋友也許都為那麼一個問題困擾過: 為什麼所有的 cpp 都必須 #include "stdafx.h" 也許請教了別的高手之後,他們會告訴你,這是先行編譯頭,必須包含。可是,這到底是為什麼呢?先行編譯頭有什麼用呢? 這得從標頭檔的編譯原理講起。其實標頭檔並不神秘,它的全部作用,就是把自己的所有內容直接“粘貼”到相應的 #include 語句處。如果不相信的話,不妨做個實驗,將一個 cpp 中的所有 #include 語句刪掉,並將它包含的檔案粘貼到相應的位置,
Time of Update: 2018-12-06
一、預備知識―程式的記憶體配置一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分 1、棧區(stack)― 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。2、堆區(heap) ― 一般由程式員分配釋放, 若程式員不釋放,程式結束時可能由OS回收 。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。3、全域區(靜態區)(static)― 全域變數和靜態變數的儲存是放在一塊的,初始化的全域變數和靜態變數在一塊地區,
Time of Update: 2018-12-06
C++中,成員指標是最為複雜的文法結構。但在事件驅動和多線程應用中被廣泛用於調用回叫函數。在多線程應用中,每個線程都通過指向成員函數的指標來調用該函數。在這樣的應用中,如果不用成員指標,編程是非常困難的。 剛遇到這種文法時也許會讓你止步不前。但你會發現,使用恰當的類型定義之後,複雜的文法是可以簡化的。本文引導你瞭解成員函數指標的聲明,賦值和調用回叫函數。 成員函數指標的聲明
Time of Update: 2018-12-06
Every programmer should learn C during their programming career. Its benefits are too numerous to ignore. Not only will it open many more job opportunities, but it will teach you more about computers as a whole. C is lower level then other
Time of Update: 2018-12-06
Visual C++.NET涉及到ATL/ATL Server、MFC和託管C++等多種編程方式,不僅功能強大而且應用廣泛。在編程中,我們常常會遇到ANSI、Unicode以及BSTR不同編碼類別型的字串轉換操作。本文先介紹基底字元串類型,然後說明相關的類,如CComBSTR、_bstr_t、CStringT等,最後討論它們的轉換方法,其中還包括使用最新ATL7.0的轉換類和宏,如CA2CT、CA2TEX等。 一、BSTR、LPSTR和LPWSTR 在Visual
Time of Update: 2018-12-06
註: 以下內容部分引自CSND中相關討論的文章,並結合自己的理解整理而成。僅供參考。0)在Windows平台下,C Runtime Library 的情況如下: 動態串連庫 匯出庫檔案 靜態串連庫 Release msvcrt.dll msvcrt.lib libc.lib(單線程), libcmt.lib(多線程)
Time of Update: 2018-12-06
Decimal -- 十進位Octal -- 八進位Hexadecimal(Hex) -- 十六進位Binary -- 二進位逸出字元是C語言中表示字元的一種特殊形式。通常使用逸出字元表示ASCII碼字元集中不可列印的控制字元和特定功能的字元,如用於表示字元常量的單撇號( '),用於表示字串常量的雙撇號( ")和反斜線( \)等。逸出字元用反斜線\後面跟一個字元或一個八進位或十六進位數表示。 逸出字元 意義 ASCII碼值(十進位) \a 響鈴(BEL) 007 \b 退格(BS) 008 \
Time of Update: 2018-12-06
轉載地址:http://blog.csdn.net/xushiweizh/archive/2006/11/06/1370337.aspx下面這個問題摘自論壇的一個文章:已知3個類O、P和Q,類O中定義了一個私人方法F1、一個公有方法F2和一個受保護的方法F3:類P和類Q是類O的衍生類別,其繼承方式如下所示: class P : protected O {…}; class Q : public O {…};關於方法F1的描述中正確的是___(34)___;關於方法F2韻描述中正確的是___(35
Time of Update: 2018-12-06
在我那篇《淺析C++中的this指標》中,我通過分析C++代碼編譯後產生的彙編代碼來分析this指標的實現方法。這次我依然用分析C++代碼編譯後產生的彙編代碼來說明C++中虛函數調用的實現方法,順便也說明一下C++中的對象內部布局。下面所有的彙編代碼都是用VC2005編譯出來的。雖然,不同的編譯器可能會編譯出不同的結果,對象的內部布局也不盡相同;但是,只要是符合C++標準的編譯器,編譯結果和對象的內部布局應該是大同小異。 首先,是一個有著簡單繼承關係的兩個類:
Time of Update: 2018-12-06
考慮以下函數:void f() { Investment *pInv = createInvestment(); // call factory function ... // use pInv delete pInv; // release object }問題: delete pInv一定會被執行嗎?當然不是!隨便列舉幾種情形。有可能在這個函數的 "..."
Time of Update: 2018-12-06
具有動態分配和釋放記憶體的能力是C/C++程式語言的重要特色之一。VisualC++ debugger和CRT庫提供了一系列有效檢測和評鑑記憶體流失的工具。設定記憶體流失檢測檢測記憶體流失的基本工具是調試器和CRT調試堆函數。為了使用調試堆函數,在你的程式中你必須含有下面的說明:#define _CRTDBG_MAP_ALLOC #include<stdlib.h>
Time of Update: 2018-12-06
理解虛函數( virtual function )的幾個關鍵點:1. 理解早綁定(early binding)、晚綁定(late binding)。所謂early binding:On compile time,就能明確一個函數調用是對哪個對象的哪個成員函數進行的,即編譯時間就曉得了確定的函數地址;所謂late binding:On compile
Time of Update: 2018-12-06
[摘自:http://www.cnblogs.com/omygod/archive/2006/11/08/554601.html]C++將記憶體劃分為三個邏輯地區:堆、棧和靜態儲存區。既然如此,我稱位於它們之中的對象分別為堆對象,棧對象以及靜態對象。三種記憶體對象的比較 棧對象的優勢是在適當的時候自動產生,又在適當的時候自動銷毀,不需要程式員操心;而且棧對象的建立速度一般較堆對象快,因為分配堆對象時,會調用operator new操作,operator
Time of Update: 2018-12-06
C和C++對函數的處理方式是不同的.extern "C"是使C++能夠調用C寫作的庫檔案的一個手段,如果要對編譯器提示使用C的方式來處理函數的話,那麼就要使用extern "C"來說明。時常在cpp的代碼之中看到這樣的代碼: #ifdef __cplusplus extern "C" { #endif //一段代碼 #ifdef __cplusplus }