Time of Update: 2018-12-08
(1)編譯單元(模組)在VC或VS上編寫完代碼,點擊編譯按鈕準備產生exe檔案時,編譯器做了兩步工作:第一步,將每個.cpp(.c)和相應的.h檔案編譯成obj檔案;第二步,將工程中所有的obj檔案進行LINK,產生最終.exe檔案。那麼,錯誤可能在兩個地方產生:一個,編譯時間的錯誤,這個主要是語法錯誤;一個,連結時的錯誤,主要是重複定義變數等。編譯單元指在編譯階段產生的每個obj檔案。一個obj檔案就是一個編譯單元。一個.cpp(.c)和它相應的.h檔案共同組成了一個編譯單元。一個工程由很多編
Time of Update: 2018-12-08
複製代碼 代碼如下: #ifndef USE_H_ #define USE_H_ #include <iostream> #include <windows.h> #include <string> using namespace std; class CUser { public: CUser(); virtual~ CUser();
Time of Update: 2018-12-08
C++格式化輸出浮點數複製代碼 代碼如下:#include <iostream>using std::cout;using std::endl;using std::fixed;using std::scientific;int main(){ double x = 0.001234567; double y = 1.946e9; cout << "Displayed in default format:" << endl << x &
Time of Update: 2018-12-08
代碼如下所示:複製代碼 代碼如下: #include <stdlib.h> #include <string> #include <windows.h> #include <stdio.h> #include <iostream> #include <limits> #include <sstream> using namespace
Time of Update: 2018-12-08
個人覺得在學習多線程編程之前最好先瞭解進程和線程的關係, 然後在學習線程工作方式的過程中動手寫個(我是從抄開始的)多線程的小程式, 會對學習多線程有很大的協助, 否則只有理論是很抽象的.在學習多線程編程之前, 必須Crowdsourced Security Testing道什麼是 線程函數, 線程函數就是另一個線程的入口函數. 預設情況下一個我們所寫的代碼都是只有一個線程的, 而這個線程的入口函數就是main() 函數, 這是系統預設的. 而我們建立的另一個線程也需要一個函數來進入,
Time of Update: 2018-12-08
代碼如下所示:複製代碼 代碼如下:#include "stdafx.h"#include <string>#include <iostream>using namespace std;char* strcpy(char *src_str, char *dest_str){ char* dest = dest_str; if ((src_str == NULL)||(dest_str == NULL)) //檢查指標有效性 { throw "Invalid
Time of Update: 2018-12-08
函數 傳回值 和 返回引用 是不同的函數傳回值時會產生一個臨時變數作為函數傳回值的副本,而返回引用時不會產生值的副本,既然是引用,那引用誰呢?這個問題必須清楚,否則將無法理解返回引用到底是個什麼概念。以下是幾種引用情況:1,引用函數的參數,當然該參數也是一個引用複製代碼 代碼如下:const string &shorterString(const string &s1,const string &s2) { return s1.size(
Time of Update: 2018-12-08
在C++中,不能聲明虛建構函式,但可以聲明虛解構函式。多態性是指不同的對象對同一訊息有不同的行為特性。虛函數作為運行時多態性的基礎,主要是針對對象的,而建構函式是在對象產生之前啟動並執行,因此虛建構函式是沒有意義的。解構函式的功能是在該類對象消亡之前進行一些必要的清理工作,解構函式最好都是virtual的。首先解釋一下虛構函數和指標之間是如何互動的,以及虛解構函式的具體含義。例如以下代碼,其中SomeClass是含有非virtual解構函式的一個類:SomeClass *p= new
Time of Update: 2018-12-08
問題:在下面的 template declarations(模板聲明)中 class 和 typename 有什麼不同? 複製代碼 代碼如下:template<class T> class Widget; // uses "class"template<typename T> class Widget; // uses "typename"答案:沒什麼不同。在聲明一個 template type parameter(模板型別參數)的時候,class 和 typename
Time of Update: 2018-12-08
雙向迴圈鏈表,即每個節點都擁有一前一後兩個指標且頭尾互鏈的鏈表。各種鏈表的簡單區別如下:單向鏈表:基本鏈表;單向迴圈鏈表:不同於單向鏈表以 NULL
Time of Update: 2018-12-08
用C++實現一個單向迴圈鏈表,從控制台輸入整型數字,儲存在單項迴圈鏈表中,實現了求鏈表大小。不足之處,還望指正! 複製代碼 代碼如下:// TestSound.cpp : 定義控制台應用程式的進入點。//實現單向迴圈鏈表#include "stdafx.h"#include <iostream>#include <string>using namespace std;//定義鏈表一個節點的結構體template <class T>struct NODE{ T
Time of Update: 2018-12-08
指標是C/C++語言的特色,而數組名與指標有太多的相似,甚至很多時候,數組名可以作為指標使用。但是數組名有些地方又不同於指標。這裡將數組名與指標用法的不同做一下總結(有些資料來自互連網),不妥之處,還望指正!(本文程式在WIN32平台下編譯):1、數組名和指向那個數組的指標,地址相同,但大小不同用例子來說明:複製代碼 代碼如下:#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc,
Time of Update: 2018-12-08
strcmp的實現函數簡介原型:extern int strcmp(const char *s1,const char * s2); 用法:加標頭檔 #include <string.h>
Time of Update: 2018-12-08
學習c++如果不瞭解記憶體配置是一件非常可悲的事情。而且,可以這樣講,一個C++程式員無法掌握記憶體、無法瞭解記憶體,是不能夠成為一個合格的C++程式員的。一、記憶體基本構成可程式化記憶體在基本上分為這樣的幾大部分:靜態儲存區、堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區:記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個運行期間都存在。它主要存放待用資料、全域資料和常量。棧區:在執行函數時,函數內局部變數的儲存單元都可以在棧上建立,函數執行結束時這些儲存單元自動被釋放
Time of Update: 2018-12-08
我們知道,用C++開發的時候,用來做基類的類的解構函式一般都是虛函數。可是,為什麼要這樣做呢?下面用一個小例子來說明: 有下面的兩個類:複製代碼 代碼如下:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };};class
Time of Update: 2018-12-08
海量資料處理中常用到的技術 1. Bloom Filtering基本的Bloom Filtering支援快速的插入和尋找操作,是一種hash表技術。基本的資料結構非常簡單,容量為m的位元組,k個hash函數,將輸入的n個元素儲存在位元組裡面。每次插入一個新的元素,先計算該元素的k個hash指,將位元組對應hash值位置為1. 尋找某個元素時,同樣的先計算k個hash值,然後查詢看是否對應位元組中得k位是否都是1,是則斷定元素存在。基本的Bloom
Time of Update: 2018-12-08
1 . 用同一個類的來源物件構造一個目標對象時,會調用拷貝建構函式來構造目標對象,如果沒有定義拷貝建構函式,將調用類的預設拷貝函數來構造目標對象。2 . 當一個函數的傳回值為一個類的對象時,如果在調用函數中,沒有定義一個對象來接收這個返回對象值,會用返回一個臨時對象儲存返回對象的值。在被調用函數結束時,這個臨時對象被銷毀。而當調用函數中有一個接受對象時,就將返回對象賦值給接收對象,這個返回對象在調用函數結束時調用解構函式。3.
Time of Update: 2018-12-08
原型 extern char *strcat(char *dest,char *src); 用法 #include <string.h> 功能 把src所指字串添加到dest結尾處(覆蓋dest結尾處的'\0')並添加'\0'。 說明 src和dest所指記憶體地區不可以重疊且dest必須有足夠的空間來容納src的字串。 返回指向dest的指標。 舉例 char str4[] = "Hello world"; char str5[] = "Hello
Time of Update: 2018-12-08
bitmap是一個十分有用的結構。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由於採用了Bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。 適用範圍:可進行資料的快速尋找,判重,刪除,一般來說資料範圍是int的10倍以下基本原理及要點:使用bit數組來表示某些元素是否存在,比如8位電話號碼擴充:bloom filter可以看做是對bit-map的擴充問題執行個體:1)已知某個檔案內包含一些電話號碼,每個號碼為8位元字,統計不同號碼的個數。8
Time of Update: 2018-12-08
發現讀取設定檔, 還是用得比較多的. 網上搜了下, 有不少的代碼範例了.不過一般實現的函數需要傳遞的參數都有設定檔的路徑.個人認為在某些情況下參數傳入 流 重用性更大一點.本想基於流的參數將 讀取, 添加, 刪除, 修改 設定檔的函數全部實現. 但發現刪除 , 修改 需要重新開啟流, 單純傳入一個流參數不能方便實現.以下是讀取, 添加 配置的函數實現."oper_config.h"複製代碼 代碼如下:#ifndef OPER_CONFIG_H_#define