Time of Update: 2018-12-03
所謂重載,就是重新賦予新的含義。函數重載就是對一個已有的函數賦予新的含義,使之實現新功能。 運算子也可以重載 運算子多載是對已有的運算子賦予多重含義 必要性 C++中預定義的運算子其運算對象只能是基礎資料型別 (Elementary Data Type),而不適用於使用者自訂類型(如類) (一) C++不允許使用者自己定義新的運算子,只能對已有的C++運算子進行重載。 (二) C++允許重載的運算子C++中絕大部分的運算子允許重載. 不能重載的運算子只有5個: (1) 成員訪問運算子. (2)
Time of Update: 2018-12-03
例:編寫程式讀入一組 string 類型的資料,並將它們儲存在 vector 中。顯示出vector的內容。接著,把該 vector 對象複製給一個字元指標數組。為 vector 中的每個元素建立一個新的字元數組,並把該 vector 元素的資料複製到相應的字元數組中,最後把指向該數組的指標插入字元指標數組。最後顯示出字元數組的內容.編寫此題痛點在於字元指標數組。現畫如下模型:parry --> parry[0] --> "aaafwaea"
Time of Update: 2018-12-03
C/C++支援比較低階的位元運算,在是眾人皆知的了。每本C/C++的教科書都會說到這部分的內容,不過都很簡略,我想會有很多人不知道位元運算用在什麼地方。這個文章就簡略說說位元運算的用處,更進一步的用法要大家自己去體會。而主要說的是操作標誌值方面。 /****************************************/#define BTI_MSK(bit) (1 << (bit))#define BIT_SET(x,bit) ((x) |= BTI_MSK (
Time of Update: 2018-12-03
偶然在書上看到句話,“為C++程式員所津津樂道的一件事,就是sort()全面打敗c語言的quicksort”,於是決定親自測試下,正好將其他的排序也一併測試了,當做當初沒寫的補償吧。 測試檔案的一些說明: 1、 測試中如果用數組,當MAX達到1000000時,會stack over,所以這裡全部用了vector。 2、隨機數用一個全域vector儲存,單獨排序時直接vector<int>
Time of Update: 2018-12-03
一個輕量級Parsing 實現。這個代碼不會從網上下載任何資料,也不會執行任何指令碼,純屬Parsing。 Parsing是通過MSHTML的Markup Service實現的。要正確使用這個代碼,需要添加MSHTML引用。由於.net中沒有定義IPersistStreamInt介面,就必須自己實現,介面定義: 以下內容為程式碼:[ComVisible(true), ComImport(), Guid("7FD52380-4E07-101B-AE2D-08002B2EC713 " ) ,
Time of Update: 2018-12-03
首先,如果不使用這兩個關鍵字,那是什麼樣 呢?看下面的例子:using System; class Test { static void Swap(ref int x, ref int y) { int temp = x; x = y; y = temp; } static void Swap(int x,int y) { int temp = x;
Time of Update: 2018-12-03
所有的ASCII碼都可以用“/”加數字(一般是8進位數字)來表示。而C中定義了一些字母前加"/"來表示常見的那些不能顯示的ASCII字元,如/0,/t,/n等,就稱為逸出字元,因為後面的字元,都不是它本來的ASCII字元意思了。 逸出字元 意義 ASCII碼值(十進位) /a 響鈴(BEL) 007 /b 退格(BS) 008 /f 換頁(FF) 012 /n 換行(LF) 010 /r 斷行符號(CR) 013 /t 水平製表(HT) 009 /v
Time of Update: 2018-12-03
程式中經常需要用到計時功能來對代碼的效率進行粗略的衡量,因此常要用到clock()函數,該函數是包含在time.h的標頭檔中的。 計時功能是基於clock_t這種資料類型的,在time.h檔案中可以發現其定義:/* Define the implementation defined time type */#ifndef _TIME_T_DEFINEDtypedef long time_t; /* time value */#define
Time of Update: 2018-12-03
終於把DB2 Express-C給裝在了Ubuntu上, 首先去IBM DB2Express官網上下載db2exc_972_LNX_x86.tar.gz,兩個ibm_data_studio_standalone_linux.tar.gzdb2exc_nlpack_972_LNX_x86.tar.gz是可選的。1. 配置 Linux 核心參數/etc/sysctl.conf檔案,添加核心參數 kernel.msgmni =1024kernel.sem = 250 256000 32
Time of Update: 2018-12-03
當讀者有一定c/c++基礎推薦的讀取順序:level 1從<<essential c++>>開始,短小精悍,可以對c++能進一步瞭解其特性以<<c++ primer>>作字典和課外讀物,因為太厚不可能一口氣看完 level 2然後從<<effective c++>>開始轉職,這是聖經,請遵守10誡,要經常看,沒事就拿來翻翻接著是<<exceptional c++>>,個人認為Herb
Time of Update: 2018-12-03
父類訪問特性 類的繼承特性 子類的訪問特性 public public protected public protected private
Time of Update: 2018-12-03
C++提供了typeid和dynamic_cast來支援RTTI機制,如下:#include <iostream>using namespace std;class base {public: virtual void funA() { cout<<"base"<<endl; }};class derive: public base{public: virtual void
Time of Update: 2018-12-03
//網上關於這方面的挺多,由於自己以前上課沒好好學資料結構,現在重新認識資料結構,//以下是自己寫的基於C++的單鏈表的建立及其一些操作,與實現,沒用模板,所以適合//有一點C++基礎的人,但可移植不夠.有什麼bug的話,歡迎指出。或有什麼問題也可以聯絡我// made by virgil (2009.2.8)//
Time of Update: 2018-12-03
聲明和使用類模板: 如果在類模板外定義成員函數,應寫成類模板形式: template<class 虛擬型別參數>函數類型 類模板名<虛擬型別參數>∷成員函數名(函數形參表列) {…}測試的模板類,如下://Compare.h#ifndef _COMPARE_H#define _COMPARE_Htemplate <typename T>class Compare{public: ~Compare(void); Compare(T,T); T max(); T
Time of Update: 2018-12-03
一、reinterpret_cast: 是特意用於底層的強制轉型,導致實現依賴(implementation-dependent)(不可移植)的結果,例如,將一個指標轉型為一個整數。 string a; double *b=static_cast<double*>(&a); cout<<b<<" "<<&a<<endl; //結果只是指標到指標(地址)的拷貝,b和&a地址一樣
Time of Update: 2018-12-03
變數的定義分配了變數的儲存空間,並有可能賦一個初始值給變數,在程式中變數只能定義一次; (如int i; 或 int i=1;)變數的聲明主要聲明了變數名和變數類型,沒有分配空間定義也是一種聲明。當在定義一個變數時,我們指出了其名稱與類型。我們不能沒定義一個變數就使用extern來聲明它,在程式中可以聲明多次。 (如extern int i; extern int i;). 只要聲明存在初始值,就被認為定義,不管是否有extern(例:extern int i=2是定義)
Time of Update: 2018-12-03
在C#中定義常量的方式有兩種,一種叫做靜態常量(Compile-time constant),另一種叫做動態常量(Runtime constant)。前者用“const”來定義,後者用“readonly”來定義。 對於靜態常量(Compile-time constant),它的書寫方式如下:public const int MAX_VALUE = 10;為什麼稱它為靜態常量呢,因為如上聲明可以按照如下理解(注意:如下書寫是錯誤的,會出編譯錯誤,這裡只是為了方便說明)。public static
Time of Update: 2018-12-03
前段時間在庫裡寫個error log. 建立檔案,直接寫個檔案名稱字,開啟。其實也預設到exe的當前路徑。 只是有些不放心這個檔案是否能真的開啟成功。畢竟沒有給絕對路徑。。。索性研究了下獲得當前路徑的用法。mfc等有他們自己的函數,我其實之前也用過,只不過忘掉 了。現在我的庫時win32的純c++寫出來的。他們用了個_getcwd,用的標頭檔#include <direct.h>代碼例子如下。 char Buf[1000]; int nLen =
Time of Update: 2018-12-03
一個很簡單的程式: view plaincopy to clipboardprint?#include "boost/python.hpp" int _tmain(int argc, _TCHAR* argv[]) { Py_Initialize(); PyRun_SimpleString("print 'hello'"); Py_Finalize(); system("pause"); return 0; } #include
Time of Update: 2018-12-03
原來一篇總結了下 C 標準庫的 setlocale() 用法,這篇講解的是 C++ 標準庫中 locale 類的用法。參考:cplusplus.com 上關於標準 C++ 中國際化支援的參考:Localization libraryLocale classThe C++ Standard Library(Nicolai M. Josuttis,侯捷譯)第 14 章 Internationalization(國際化)locale 類在標頭檔 <locale> 中聲明,另外可能會用到 &