Time of Update: 2018-12-05
前一小節《容器與繼承》http://blog.csdn.net/thefutureisour/article/details/7744790提到過:對於容器,如果定義為基類類型,那麼則不能通過容器訪問衍生類別新增的成員;如果定義為衍生類別類型,一般不能用它承載基類的對象,即使利用類型轉化強行承載,則基類對象可以訪問沒有意義的衍生類別成員,這樣做是很危險的。對這個問題的解決辦法,是使用容器儲存基類的指標。在C++中,這類問題有一種通用的解決辦法,稱為控制代碼類。它大體上完成兩方面的工作:1.管理指
Time of Update: 2018-12-05
3 Math基礎類初探概覽,Math基礎類封裝了常用的數學公式,特別的,提供了對角度和弧度的支援。該函數封裝了一些使用組合語言實現的基礎數學類,因此效率還是有保證的。彙編的函數在asm_math.h標頭檔中被定義,不過彙編那個對俺還是太高深了暫時放棄……。3.1幾個公有靜態變數的定義技巧:const Real Math::POS_INFINITY = std::numeric_limits<Real>::infinity();const Real
Time of Update: 2018-12-05
在(一)中曾經簡要的分析了Ogre幀監聽的方法。這主要是通過_fireFrameStarted()和_fireFrameEnded()兩個方法中,產生一個事件,然後分發給每一個註冊上去的監聽器。這篇日誌著重分析觀察者模式在Ogre中的應用,和Ogre引擎中監聽器的使用原理。4.1監聽器模式:首先看看“四人幫”寫的設計模式上,對監聽器模式的描述。定義:為對象建立一個一對多的關係,這樣當一個對象變化時,所有的依賴對象都能被通知到並且自動的更新。他的作用主要有(1)抽象觀測者和對象之間的耦合(2)提供
Time of Update: 2018-12-05
雖然在VB裡實現XP風格很簡單,但是要使用XP風格同時又讓按鈕顯示圖片,則實現起來要麻煩一些,為此,我寫了一個控制項來實現前述功能,同時讓讀者可以從中瞭解XP主題介面的繪製過程。 使用辦法很簡單,在VB裡建立一個工程,然後添加一個控制項模組,粘貼以下代碼,再將控制項放置到視窗即可,當然,可別忘設定圖片和文字屬性,具體代碼如下:'* ************************************************** *'*
Time of Update: 2018-12-05
來自:http://www.libing.net.cn/read.php/1724.htm伺服器公用組件實現 -- 環形緩衝區 訊息佇列鎖調用太頻繁的問題算是解決了,另一個讓人有些苦惱的大概是這太多的記憶體配置和釋放操作了。頻繁的記憶體配置不但增加了系統開銷,更使得記憶體片段不斷增多,非常不利於我們的伺服器長期穩定運行。也許我們可以使用記憶體池,比如SGI STL中附帶的小記憶體 Clerk。但是對於這種按照嚴格的先進先出順序處理的,塊大小並不算小的,而且塊大小也並不統一的記憶體配置情況來說,
Time of Update: 2018-12-05
CString 轉換成CTime:CString strCString="2004-08-12 14:45:22"; COleVariant vtime(strCString); vtime.ChangeType(VT_DATE); COleDateTime time4=vtime; SYSTEMTIME systime; VariantTimeToSystemTime(time4, &systime); CTime tm(systime);
Time of Update: 2018-12-05
1. 指標很靈活,這使得指標很難管理,在定義指標時,將在棧中開闢一塊記憶體存放指標的地址(棧內的記憶體由系統分配和釋放),指標的地址記憶體只是存放指標的地址,不存放指標指向的資料,值得注意的是,定義指標時指標會隨機指向一塊記憶體,如int *p;p會指向一塊不為空白的記憶體,相當危險,例如執行判斷if(!p){ printf("p為空白");};這裡不會輸出"p為空白";所以在定義時想讓指標p為空白,則要int *p = NULL;如果程式大的話,執行的結果出錯都不知道在哪裡. 2.
Time of Update: 2018-12-05
又有一段時間沒更新部落格了,恰好剛才在寫代碼時,想起以前寫的一個VB表單類的代碼,於是扒了出來:'* ************************************************** *'* 模組名稱:MYWindow.cls'* 模組功能:自訂視窗類別'* 編碼:lyserver'* 連絡方式:http://blog.csdn.net/lyserver'* **************************************************
Time of Update: 2018-12-05
在第二講中,我介紹了如何操作每個像素,這次利用操作像素完成簡單的影像處理操作。首先從給映像加入椒鹽雜訊開始,椒鹽雜訊其實就是使映像的一些隨機的像素為黑色(255)或者白色(0):#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;void salt(Mat& image, int n){ for(int k=0; k<n; k+
Time of Update: 2018-12-05
眾所周知 qt中一個訊號可以串連兩個槽, 今天想體驗一下,寫了個簡單的UI 檔案,包含一個簡單的lineEdit 、一個pushButton 寫了兩個connect 如下:connect(pushButton , SIGNAL(clicked()) , this, SLOTS(serverOpen()));connect(pushButton , SIGNAL(clicked()) , this, SLOTS(serverClose()));serverOpen(){if(!flag){
Time of Update: 2018-12-05
先看提取輪廓的代碼:Mat image = imread("D:/picture/images/binaryGroup.bmp",0);if(!image.data)return -1;imshow("源映像",image);//擷取輪廓std::vector<std::vector<Point>> contours;//擷取輪廓:findContours(image,//映像contours,//輪廓點//包含映像拓撲結構的資訊(選擇性參數,這裡沒有選)CV_RETR_
Time of Update: 2018-12-05
問題原型:switch( nStreamType ) { case 0: function1(); //或者function1( int ) break; case 1: ...... case 255: function255(); //或者function1( int
Time of Update: 2018-12-05
這次通過一個讀取視頻的綜合例子來介紹VideoCapture類的一些基本操作:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace std;using namespace cv;int
Time of Update: 2018-12-05
Qt的版面配置(layout)系統提供了一個簡單有效方法來做child widget的版面編排。使用版面配置具有下列的優點:將child widget的位置做編排可調整的視窗預設大小可調整的視窗最小大小可調整視窗大小根據內容自動調整:child widget的字型大小、文字或其他內容隱藏或顯示child widget移除child
Time of Update: 2018-12-05
在模板的的聲明中,class與typename是沒有什麼區別的:template <typename T> T func1(const T&);template <class T> T func2(const
Time of Update: 2018-12-05
原文出處這篇文章要介紹的,是我作為專業程式員這些年來學到的能真正提高My Code品質和整體工作效率的10件事情。1.
Time of Update: 2018-12-05
本篇著重分析一下,在Ogre引擎中單件模式是如何被運用的,也就是Ogre::Singleton類的分析和使用。在開始之前,再次感歎一下,高手寫的東西就是不一樣,不僅僅照顧了不同的編譯器,(GCC),還照顧了VC編譯器的不同版本其中有一個地方這樣寫道:#if defined( _MSC_VER ) && _MSC_VER < 1200 int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;
Time of Update: 2018-12-05
一 關於初始化ADODB 需要在InitInstance()中首先調用AfxOleInit()對OLE進行初始化,之後要匯入c:/program files/common files/system/ado/msado15.dll,經過以上幾步操作,接下來可以通過調用_ConnectionPtr和_RecordsetPtr來建立連線物件與記錄集對象。為了簡化編程,我封裝了一個很簡單的類庫CDB,實現了對_ConnectionPtr的簡單調用。// DB.h: interface for
Time of Update: 2018-12-05
在item16和17裡大師曾經介紹過,一個new的過程大致分兩步: - 申請記憶體 -
Time of Update: 2018-12-05
1、C和C++都沒有提供位元的表達方法。2、C,C++語言中,如何表達一個八位元呢? 如果這個數是 876,我們可以斷定它不是八位元,因為八位元中不可能出7以上的阿拉伯數字。但如果這個數是123、是567,或12345670,那麼它是八位元還是10進位數,都有可能。 所以,C,C++規定,一個數如果要指明它採用八進位,必須在它前面加上一個0,如:123是十進位,但0123則表示採用八進位。 int 0123;