Time of Update: 2018-12-03
比如說你用C++開發了一個DLL庫,為了能夠讓C語言也能夠調用你的DLL輸出(Export)的函數,你需要用extern "C"來強制編譯器不要修改你的函數名。通常,在C語言的標頭檔中經常可以看到類似下面這種形式的代碼: #ifdef __cplusplus extern "C" { #endif /**** some declaration or so *****/ #ifdef __cplusplus } #endif /* end of __cplusplus */
Time of Update: 2018-12-03
在C語言中,假設我們有這樣的一個函數:int function(int a,int b)調用時只要用result =
Time of Update: 2018-12-03
看了C++
Time of Update: 2018-12-03
C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型別的指標指向其子類的執行個體,然後通過父類的指標調用實際子類的成員函數。這種技術可以讓父類的指標有“多種形態”,這是一種泛型技術。所謂泛型技術,說白了就是試圖使用不變的代碼來實現可變的演算法。比如:模板技術,RTTI技術,虛函數技術,要麼是試圖做到在編譯時間決議,要麼試圖做到運行時決議。 關於虛函數的使用方法,我在這裡不做過多的闡述。大家可以看看相關的C++的書籍。在這篇文章中,我只想從虛函數的實現機制上面為大家
Time of Update: 2018-12-03
眾所周知,UDP是不需連線的,可是當實際現場使用時,如果遠程主機異常關閉,伺服器則會拋出一個異常:遠程主機強行關閉了一個串連而一但這個異常拋出後,又沒有及時處理,那麼整個UDP服務都將崩潰而不能接收任何資料處理的方法是uint IOC_IN = 0x80000000; uint IOC_VENDOR = 0x18000000; uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12; udp.Client.IOControl((int)SIO_UDP_
Time of Update: 2018-12-03
C++程式設計語言中,有一種專門應對類型定義的用法,叫做C++ typedef。那麼我們應該如何正確理解這一應用呢?在這篇文章中,我們會通過C++ typedef不同使用方法來對這一應用進行詳細介紹。C++ typedef,顧名思義,為“類型定義”,可以解釋為:將一種資料類型定義為某一個標識符,在程式中使用該標識符來實現相應資料類型變數的定義。例如:typedef unsigned int UINT; int main (int argc, char *argv[]) {
Time of Update: 2018-12-03
輸入輸出資料流在<iostream>中定義,並且在這個標頭檔中還聲明了標準控制台輸出資料流cout包含控制符的標頭檔:標準標頭檔<ios> 和 <iomanip> 輸出資料流:boolalpha 和 noboolalpha:
Time of Update: 2018-12-03
一直在看《C++ Primer 第四版》和 《C++ 程式設計教程》 (錢能 主編)在《C++ Primer 第四版》的 4.2.4節 , 《C++ 程式設計教程》8.3節 都有講關於 指標和數組 的知識。 我把前者稱為 A, 後者稱為 B吧。 A 的東西是比較全的, 相對於B。 不過B 的東西直擊重點, 並且例子舉的好。 1. 在運算式中使用數組名時, 該名字會自動轉換為指向數組第一個元素的指標(B中是第一個元素地址, 個人覺得指標更貼切, 指標做加減法很正常嘛).
Time of Update: 2018-12-03
#include <iostream>using std::cout;using std::endl;typedef int (*pf)(int i);int f2(int i){ return i;}int f3(int i){ return 2*i;}pf f(bool b) //第一種聲明方式//int (*f(bool b))(int i) //第二種聲明方式 { return (b?f2:f3);}int main(){ pf p =
Time of Update: 2018-12-03
#include <iostream>using namespace std;//反序字串chs到字串rchs. //參數:chs[]原字串, rchs[]目的字串, len 長度 inline void reverse(const char chs[], char rchs[], int len){ int rindex = len; for(int i=0; i < len; ++i){ rchs[--rindex] = chs[i]; }
Time of Update: 2018-12-03
typedef unsigned int size_t; size_t 其實是一個無符號的int; 在對於數組的迴圈中, 貌似很有用, 因為數組的下標都是 0, 1, 2......, 不可能是負數. 下面是這個陷阱的示範: int limit = -1; for(size_t i=0; i < limit; ++i){ cout << i << endl; } 這段代碼裡面的迴圈體貌似不會被執行, 因為 0
Time of Update: 2018-12-03
出處:http://blog.csdn.net/classfactory/archive/2004/08/29/87749.aspx C++ 中的枚舉類型繼承於 C 語言。就像其他從 C 語言繼承過來的很多特性一樣,C++ 枚舉也有缺點,這其中最顯著的莫過於範圍問題——在枚舉類型中定義的常量,屬於定義枚舉的範圍,而不屬於這個枚舉類型。例如下面的樣本:enum FileAccess { Read = 0x1, Write = 0x2,};FileAccess access =
Time of Update: 2018-12-03
廢話不多說, 先看看下面的代碼! class ClassA{ private: int m_a; public: void copy(const ClassA &other) { m_a = other.m_a; } } 很多人會問了m_a 是類
Time of Update: 2018-12-03
#include <iostream>class Mytime{ private: int hours; int minutes; public: Mytime(int h = 0, int m = 0):hours(h),minutes(m){} Mytime(const Mytime
Time of Update: 2018-12-03
/*************************************************************//*三、二叉樹的遍曆/*1.輸入一個完全二叉樹的層次遍曆字串,建立這個二叉樹,/*輸出這個二叉樹的前序走訪字串、中序遍曆字串、/*後序遍曆字串、結點數目、二叉樹高度。/*2.輸入二叉樹前序序列和中序序列(各元素各不相同),/*建立這個二叉樹,輸出該二叉樹的後序序列。/*****************************************************
Time of Update: 2018-12-03
由於AJAX基礎教程的第八章的例子用到JSTL1.1,感冒了幾天,今天終於好了,那就要快點學習JSTL1.1了,就算是皮毛也好啊。在網上看了些文章,有了個大概瞭解。要使用JSTL1.1最起碼的東東,類的話需要jstl.jar,standard.jar 這兩個,可以下個c.tld, 然後在web.xml的<web-app>裡面添加<jsp-config>
Time of Update: 2018-12-03
原文的傳送:I don’t want to see another “using namespace xxx;” in a header file ever again 在這裡,我毫不迴避地說了這句話。 作為一個開發人員/團隊領導者,我經常會去招聘新的項目成員,有時候也協助其他組的人來面試應聘者。作為應聘流程之一,我經常要求應聘者寫一些代碼,因此我檢查過相當多的代碼。在最近提交的 C++ 代碼中,我注意到一個趨勢,在任何標頭檔中,我總是能看到以下代碼:using namespace
Time of Update: 2018-12-03
/************************************************************************* 著作權:汪海的實驗室 作者:汪海洋 日期:2013-03-11 描述:資料結構課程設計,使用堆棧解決迷宮的尋徑問題 **************************************************************************/#include
Time of Update: 2018-12-03
Boost C++ 函式庫(Libraries)是一組擴充C++功能性的經過同行評審(Peer-reviewed)且開放源碼程式庫。大多數的函式為了能夠以開放源碼、封閉專案的方式運作,而授權於Boost軟體授權條款(Boost Software License)之下。許多Boost的開發人員是來自C++標準委員會,而部份的Boost函式庫成為C++的TR1標準之一。 今天學習了兩個:boost::array,boost::lambda. 一個例子:#include
Time of Update: 2018-12-03
首先a是一個數組名,當看到這個a與&a時,一般我們的理解都是這個數組的首地址。沒錯,如果加上列印的話,確實兩個值是一樣的。不過&a是整個數組的首地址,a則是數組首元素的地址,雖然值一樣,但是意義卻不相同。在此之前有必要先看下c程式在記憶體中的分布圖。下面來看一個例子吧還是。範例程式碼:#include <stdio.h>int main(int argc, char *argv[]){int i;int a[]={1, 2, 3, 4, 5};int s;int