原创 深度探索c++對象模型之new和delete運算符介紹

      在c++中,無論是new還是delete,它們都被當成是運算符的,new運算符對應的是C語言中的malloc函數【在new的重載運算符函數裏面調用malloc】,而delete自然對應的是C語言中的free函數了。當我們寫下一

原创 深度探索c++對象模型之template的具現行爲

      讓我們先來設計一個模板類,名字叫Point:template <class Type> class Point { public:

原创 深度探索c++對象模型之虛繼承的對象構造

      鄭重聲明:以下文字“借鑑”自侯捷老師的譯作《深度探索C++對象模型》部分內容【5.2節,大概在211頁左右】,寫在這裏,算是加深自己對此書內容的記憶,因爲鄙人水平太淺,難免有理解錯誤的地方,如果有朋友看出來,還請費神指出,鄙人

原创 深度探索c++對象模型之帶有constructor類數組的new語義學

      這個還是有關我在前幾篇文章談過的“vec_new”,它只針對有constructor的類數組,像我們寫【int *p = new int[5];】或【My_Simple_Class *pm = new My_Simple_Cl

原创 深度探索c++對象模型之類對象的賦值

      在C++中,當我們聲明一個類時,如果沒有給這個類操作符“=”定義一個函數,那麼一般情況下編譯器會自動爲這個類合成一個默認的copy assignment operator【拷貝賦值操作符】,而這種copy assignment

原创 深度探索c++對象模型之member function的具現行爲

      對於template 的支持,最困難的就是template function的instatiation【具現】。截至此書問世,大家的編譯器提供了兩種策略:一個是編譯時期策略——模板程序代碼必須在program text fil

原创 深度探索c++對象模型之類對象數組的黑盒

      還是以前的Point類,如果我們用Point聲明瞭一個數組,比如【Point p[10];】,在編譯器層面會發生什麼呢?這要分爲兩種情況,首先,如果我們在定義Point類時,既沒有定義一個constructor,也沒有定義一個

原创 編程學習筆記之MFC內部組織架構

      MFC全稱是Microsoft Foundation Classes,意爲微軟基礎類庫,是一個C++的類庫,裏面封裝了大量的windows API尤其是win32 API函數,因爲我們在開發win32應用程序的時候,需要做很多

原创 從0開始如何開發貪吃蛇遊戲

      作爲一款經典遊戲,貪吃蛇相信很多朋友都玩過,規則簡單易上手。但您有沒有想過自己製作一款貪吃蛇遊戲呢?鄙人最近有意學習MFC,所以先拿貪吃蛇練了一下手。接下來就介紹一下這款最簡陋的貪吃蛇的開發歷程。       首先是開發環境的

原创 關於四則運算的程序算法

      很久以前回復了一個求加減乘除圓括號計算器的帖子,在那裏面給出了一段程序代碼,但可惜的是那個程序後來被熱心人證明是有bug的,所以這個程序一直以來都是我個人心中的污點,偶爾想到的時候,就會辣一下眼睛。這不今天有個妹子提到這事,於

原创 編程學習筆記之Java相關vector向量的介紹

在Java中,有一個包叫java.util,它是一個保存着各種常用工具類的類庫,其中就包括向量(vector)。向量是一種類似數組的順序存儲的數據結構,但是它的功能比數組強大的多。比如,Vector類的對象是允許不同類型大小的元素共存的變

原创 深度探索c++對象模型之異常處理的前介

      對於exception handling【異常處理】來說,編譯器的主要工作是找出所有的catch子句,以處理被丟出來的exception。這就需要追蹤程序堆棧中的每一個函數的當前作用域,包括追蹤函數中的local class

原创 如何自制一個簡單的C++ string類

      在用c++語言時,相信平時使用最多的庫類,string一定是其中之一了。那麼磨其鋒方能知其利,今天我們在這裏自制一個我們自己的string類,相比正版的string,這個盜版的string會簡陋很多,但是通過實現其中一些普遍的

原创 坦克小戰的遊戲規則說明(3)

                                 最終決戰       我們拿到了關鍵的王牌,蟹星人搬起的石頭最終卻砸了自己的腳,事情的發展已經遠超它們的預料;但即便如此,高傲的蟹星首領並

原创 深度探索c++對象模型之執行期的類型識別RTTI

在cfront中,用來表現一個程序的內部類型體系,看起來像這樣: //程序層次結構的根類(root class) class node{...}; class type : public node{...}; //兩個函數陳述 cl