C++物件導向編程筆記(一)

C++物件導向編程(一)今天看了一點primer中有關物件導向編程的內容,以下是自己的一點總結。一、關於虛函數1、定義為virtual的函數是基類期待衍生類別重新定義的,基類希望衍生類別繼承的函數不能定義為虛函數。在衍生類別中重新定義的函數應與虛函數具有相同的形參個數和形參類型。以實現統一的介面,不同定義過程。2、通過基類的引用(或指標)調用虛函數時,發生動態綁定。引用(或指標)既可以指向基類對象也可以指向衍生類別對象,這一事實是動態綁定的關鍵。用引用(或指標)調用的虛函數在運行時確定,被調用的

C++類模板實現資料結構——棧

以下是本人用C++類模板實現的一種資料結構——棧。希望對別人有所協助,也希望有人給出意見!畢竟我也是很少用模板這東西,新手一個。#ifndef _STACK_H_INCLUDED#define _STACK_H_INCLUDEDtemplate<typename T>class _stack{public:_stack(size_t _capacity = 1):capacity(_capacity),pArry(new

C++棧的實現

2009-04-15 11:40順序棧(seqential stack)就是用順序儲存方式儲存的棧。在下面順序棧的類定義中是用數組儲存的。用stacka[maxsize]儲存,maxsize是最大允許存放元素的個數。變數top表示棧頂部元素的位置,初始值為-1,表示棧空.      我們首先給出順序棧的抽象資料類型的描述,然後給出順序棧的類定義與實現。下面是順序棧的抽象資料類型的描述。      ADT seqstack is       Data          

C++中const的運用及注意

在我學習C++的過程中,對const的應用不可不說是最容易混亂和最容易出錯的。但是const卻是一個好東西,每一個C++程式員都必須掌握它。以下為本人的一點總結。 1、用const 修飾函數的參數  如果參數作輸出用,不論它是什麼資料類型,也不論它採用“指標傳遞”還是“引用傳遞”,都不能加const 修飾,否則該參數將失去輸出功能。const 只能修飾輸入參數。a, 如果輸入參數採用“值傳遞”,由於函數將自動產生臨時變數用於複製該參數,該輸入參數本來就無需保護,所以不要加const

C++的一大誤區——深入解釋直接初始化與複製初始化的區別

不久前,在部落格上發表了一篇文章——提高程式運行效率的10個簡單方法,對於其中最後一點,多使用直接初始化,有很多讀者向我提出了疑問,並寫了一些測試程式,來說明直接初始化與複製初始化是同一件事。讓我瞭解到大家對於直接初始化與複製初始化的區別的確是不太清楚,無可否認,那篇文章的例子用得的確不太好,在這裡表示歉意!所以我覺得還是有必要跟大家詳細分享一下我對直接初始化和複製初始化的理解。一、Primer中的說法首先我們來看看經典是怎麼說的:“當用於類類型對象時,初始化的複製形式和直接形式有所不同:直接初

C++寫的一個讀取CSV檔案的函數

第一個函數:計算一個字串中的某個子串的個數int strstr_cnt(const char *string, const char *substring) { int i,j,k,count = 0; for (i = 0; string[i]; i++){  for (j = i, k = 0; (string[j] == substring[k] && (j < strlen(string))); j++,k++) {   if (! substring[k + 1]

Visual C++編程實現網路攝影機視頻捕捉 儲存

http://www.mscto.com/vc/2009022674609.html另一個 使用Sample Grabber過濾器撲獲映像Visual C++編程實現網路攝影機視頻捕捉髮布時間:2007-12-29 09:16:49  來源:  作者:  點擊:798  前言  DirectShow是微軟公司提供的一套在Windows平台上進行流ApsaraVideo for Media

推薦的C++書籍以及讀取順序

 當讀者有一定c/c++基礎推薦的讀取順序:level 1從<<essential c++>>開始,短小精悍,可以對c++能進一步瞭解其特性以<<c++ primer>>作字典和課外讀物,因為太厚不可能一口氣看完level 2然後從<<effective c++>>開始轉職,這是聖經,請遵守10誡,要經常看,沒事就拿來翻翻接著是<<exceptional c++>>,個人認為Herb

c++智能指標的使用,auto_ptr,shared_ptr

今天寫程式時想用智能指標與vector容器一起解決指標數組的成員管理問題。在我的程式中我用到了多個指標容器,這樣就導致了一個問題,這些指標容器的清空非常繁瑣,我不能僅僅調用一次clear就能完成,我需要每次從容器中取出一個元素,然後釋放掉這個元素所佔的記憶體,之後再清除掉指標,然後再清空容器。我覺得很是麻煩,於是想將其改進,我不需要去管理容器內的這些指標,當容器被清空或者銷毀時,我希望這些元素所佔的記憶體也都被釋放掉。於是,我想到了智能指標,現將今天的整個過程記錄下來,以免日後再犯同樣的錯誤,同

c++中bool數組與bitset,vector的使用與佔用空間大小對比

因為最近項目中需要對一個很大的二維數組記錄是否使用過一個資料,所以我就想到了作業系統中對記憶體塊的索引的方式,採用位元影像可以在O(1)複製度內設定是否使用以及尋找是否能夠使用,但是c++中對於bool型的變數的儲存是按照1個位元組(8bit)儲存的,造成了記憶體空間的浪費,由於數組可能會很大(500W+)所以我想到用bitset來實現,但是由於我的程式運行中對於這個數組大小是不確定的,需要動態去確定,所以又帶來了很多問題。下面就這些問題與解決方案做一下總結:一、bool數組c++中規定每個bo

C++虛函數的原理

  理解虛函數( virtual function )的幾個關鍵點:1.       理解早綁定(early binding)、晚綁定(late binding)。所謂early binding:On compile time,就能明確一個函數調用是對哪個對象的哪個成員函數進行的,即編譯時間就曉得了確定的函數地址;所謂late binding:On compile

C++類型轉換重載研究(一)

最近在使用COM的字串時,覺得_bstr_t的自動類型轉換非常有意思,故特來研究。下面是_bstr_t的一些用法:將char*/WCHAR*值賦給_bstr_tm_rst->GetFields()->GetItem(nCol)->Value = (_bstr_t)sValue;從_bstr_t返回char*/WCHAR*值strcpy(sValue, (char*)(_bstr_t)vValue);wcscpy(sValue, (WCHAR*)(_bstr_t)vValue);

C++標準庫中sstream和strstream的區別(建議使用sstream)

在C++有兩種字串流,一種在sstream中定義,另一種在strstream中定義。它們實現的東西基本一樣。strstream裡包含class strstreambuf;class istrstream;class ostrstream;class strstream;它們是基於C類型字串char*編寫的sstream中包含class istringstream;class ostringstream;class stringbuf;class stringstream;class

C/C++的64位整型 不同編譯器間的比較

//為了和DSP相容,TSint64和TUint64設定成TSint40和TUint40一樣的數   //結果VC中還是認為是32位的,顯然不合適   //typedef signed long int     TSint64;   //typedef unsigned long int   TUint64;      //ANSI C中規定long long才能表示64位   //參見:http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx 

C++的一些知識要點記錄

常量指標  const int *p / int const *p指標常量  int * const p常引用  const int &p = a;數組1. 定義時初使化,花括弧內給出常量表;2. 如果給定的個數不足,則對其餘元素初使化為0;3. 靜態數組,C++自動初使化為0;指標數組 int *pArray[2] = {NULL};數組指標int nArray[5] = {0};int (*pArray)[5] = nArray;(int (*pArray)[5])[2] =

c++託管使用c#動態庫

     拿來一個dll,是c#編譯的,我在c++程式中需要使用該dll,網上查了相關資料,需要用到 c++託管相關知識,即CLR公用語言時運行環境。具體使用步驟如下:          1.拷貝dll到工程運行目錄下。    2.引用:           #using \"..\\debug\\CTest.dll\"         using namespace CTest;           如果 程式中引用了

慶祝開通blog,同時記下C#中如何進行CRC校正與浮點數的轉換

  源於CSDNCRC 校正演算法C#實現一 ——介面實現 CRC 校正有 CRC 8位 16位 32位所以在實現這些校正算髮之前,先實現它們的介面! using System; namespace CRC {  public interface ICRC  {        long Value   {     get;   }      void Reset();      void Crc(int bval);      void Crc(byte[] buffer);   

C++編碼技術:為什麼要避免單參數建構函式?

為什麼要避免單參數建構函式?下面的代碼定義了兩個類A和B,B支援<<,A不支援(這是一個疏忽),正常情況下這應該發生編譯錯誤,但是由於B存在從A構造的功能(注意,這是A不能控制的),代碼編譯通過,但是執行結果是完全無法理解的。如果此問題發生在一個大型項目中(也就是涉及到的類和函數分布在不同目錄的不同檔案中),不能假設這個問題可以被輕易解決。class A{public: string type()const{return "A";}};class

最佳化C代碼常用的幾招 )

  最佳化C代碼常用的幾招在效能最佳化方面永遠注意80-20原則,即20%的程式消耗了80%的已耗用時間,因而我們要改進效率,最主要是考慮改進那20%的代碼。不要最佳化程式中開銷不大的那80%,這是勞而無功的。第一招:以空間換時間電腦程式中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程式的效率問題,我們就有瞭解決問題的第1招--以空間換時間。比如說字串的賦值:方法A:通常的辦法#define LEN 32char string1 [LEN];memset (string1,0

總頁數: 4314 1 .... 1255 1256 1257 1258 1259 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.