原创 C++進階—>易錯知識點隨筆

static 靜態變量和靜態成員函數: 1)靜態變量和靜態函數是屬於整個類的而不是某個對象,其只存儲一份地址供所有對象共用; 2)使用靜態成員變量實現多個對象之間的數據共享不會破壞隱藏的原則,保證了安全性還可以節省內存; 3)靜態成員函數

原创 C++進階—>各類型佔大小及sizeof函數

本文針對32位編譯器而言,64位編譯器同理。 /****************************各類型所佔大小*******************************/ 本部分參考http://blog.csdn.net/y

原创 C++進階—>子類、父類、父父類間虛函數調用詳解

class one { public: one(int data=0):m1_data(data) { } int GetData() { return dodata(); } virtual int dodat

原创 C++進階—>互斥量:Event控制:多線程實現生產者-消費者例子

     一個典型的生產者-消費者問題,它們公用的資源是SharedBuffer,當Buffer中有數據且未滿時,兩個線程都可以運行,當Buffer爲 空時,Consumer就要等待,直到Buffer不爲空,這裏就是用event來實現的;

原创 C++之memset使用詳解及This function or variable may be unsafe錯誤

1.memset使用詳解 1)void *memset(void *s,int c,size_t n) 總的作用:將已開闢內存空間 s 的首 n 個字節的值設爲值 c。 2).memset() 函數常用於內存空間初始化。如: char s

原创 C++進階—>C++中的多線程

本文將接着講一下C++中多線程程序的開發.這裏主要講Windows平臺線程的用法,創建線程要調用windows API的CreateThread方法。 創建線程 在Windows平臺,Windows API提供了對多線程的支持。前面

原创 C++進階—>CreateEvent控制線程

1.概述        事件對象就像一個開關:它只有兩種狀態---開和關。當一個事件處於”開”狀態,我們稱其爲”有信號”否則稱爲”無信號”。可以在一個線程的執行函數中創建一個事件對象,然後觀察它的狀態,如果是”無信號”就讓該線程睡眠,這樣

原创 C++進階—>線程同步的四種方式

線程之間通信的兩個基本問題是互斥和同步。 (1)線程同步是指線程之間所具有的一種制約關係,一個線程的執行依賴另一個線程的消息,當它沒有得到另一個線程的消息時應等待,直到消息到達時才被喚醒。 (2)線程互斥是指對於共享的操作系統

原创 C++進階—> CloseHandle詳解及CloseHandle後線程未停

函數說明 BOOL CloseHandle(HANDLE hObject); 參數 hObject :代表一個已打開對象handle。 返回值 TRUE:執行成功; FALSE:執行失敗,可以調用GetLastError()獲知失敗原因。

原创 C++進階—>以操作系統的角度述說線程與進程

什麼是線程 什麼是線程?線程與進程與有什麼關係?這是一個非常抽象的問題,也是一個特別廣的話題,涉及到非常多的知識。我不能確保能把它講的話,也不能確保講的內容全部都正確。即使這樣,我也希望儘可能地把他講通俗一點,講的明白一點,因爲這是

原创 C++進階—>friend

0.前言 friend友元,顧名思義是好朋友的意思,即我是你的好朋友,你所私有的東西會跟我分享,爲我所用;通常分爲友元函數和友元類。 1.友元函數 1)友元函數能夠訪問類中的私有變量; 2)友元函數可以定義在類中的任何位置,public、

原创 C++進階—>類模板

1類模板 1.1爲什麼需要類模板 類模板與函數模板的定義和使用類似,我們已經進行了介紹。 有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同,如下面語句聲明瞭一個類:   Ø 類模板用於實現類所需數據的類型參數化 Ø 類模板在表

原创 C++進階—>線程優先級與線程安全

線程優先級 現在主流操作系統(如Windows、Linux、Mac OS X)的任務調度除了具有前面提到的時間片輪轉的特點外,還有優先級調度(Priority Schedule)的特點。優先級調度決定了線程按照什麼順序輪流執行,在

原创 C++進階—>終止線程的運行

1 終止線程的運行 若要終止線程的運行,可以使用下面的方法: • 線程函數返回(最好使用這種方法)。 • 通過調用E x i t T h r e a d函數,線程將自行撤消(最好不要使用這種方法)。 • 同一個進程或另一個進程中的線程調用