Time of Update: 2018-12-05
一、標準庫string類型string類型支援長度可變的字串,C++標準庫將負責管理與儲存字元相關的記憶體,以及提供各種有用的操作 ,在VC中直接F1查看template < class CharType, class Traits=char_traits<CharType>, class Allocator=allocator<CharType> >class basic_stringtypedef
Time of Update: 2018-12-05
一、bool 類型邏輯型也稱布爾型,其取值為true(邏輯真)和false(邏輯假),儲存位元組數在不同編譯系統中可能有所不同,VC++中為1個位元組。聲明方式:bool result; result=true;可以當作整數用(true一般為1,false為0)把其它類型的值轉換為布爾值時,非零值轉換為true,零值轉換為false,注意會發生截斷。二、const
Time of Update: 2018-12-05
一、類聲明//類是一種使用者自訂類型,聲明形式:class 類名稱{ public: 公有成員(外部介面) private: 私人成員 protected:
Time of Update: 2018-12-05
一、建構函式初始化列表推薦在建構函式初始化列表中進行初始化建構函式的執行分為兩個階段初始化段普通計算段(一)、對象成員及其初始化 C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940#include <iostream>using namespace std;class Object{public: Object(int num) : num_(num) {
Time of Update: 2018-12-05
一、建構函式、預設建構函式(1)、建構函式建構函式是特殊的成員函數建立類類型的新對象,系統自動會調用建構函式建構函式是為了保證對象的每個資料成員都被正確初始化函數名和類名完全相同不能定義建構函式的類型(傳回型別),也不能使用void通常情況下建構函式應聲明為公有函數,一般被隱式地調用。建構函式被聲明為私人有特殊的用途,比如單例模式,以後詳談。建構函式可以有任意類型和任意個數的參數,一個類可以有多個建構函式(重載)(2)、預設建構函式不帶參數的建構函式如果程式中未聲明,則系統自動產生出一個預設建構
Time of Update: 2018-12-05
一、深拷貝與淺拷貝說得簡單點,假設一個類有指標成員,如果在拷貝的時候順帶連指標指向的記憶體也分配了,就稱為深拷貝,如(v2 從 v 拷貝而來):如果只是分配指標本身的記憶體,那就是淺拷貝,如:淺拷貝造成的問題是有兩個指標指向同塊記憶體,delete 其中一個指標,那麼剩下的指標將成為野指標。編譯器合成的預設拷貝建構函式和賦值運算子是淺拷貝的,如果只是普通成員的賦值,淺拷貝也是可以的。 C++
Time of Update: 2018-12-05
一、友元介紹我們知道,類的成員函數可以訪問同類的其他成員函數,包括公有、私人和保護成員。而類的外部函數只能訪問類的公有成員。友元是一種允許非類成員函數訪問類的非公有成員的一種機制。可以把一個函數指定為類的友元,也可以把整個類指定為另一個類的友元。友元函數友元類二、友元函數友元函數在類範圍外定義,但它需要在類體中進行說明為了與該類的成員函數加以區別,定義的方式是在類中用關鍵字friend說明該函數,格式如下:friend 類型
Time of Update: 2018-12-05
一、多重繼承單重繼承——一個衍生類別最多隻能有一個基類多重繼承——一個衍生類別可以有多個基類class 類名: 繼承方式 基類1,繼承方式 基類2,…. {….};衍生類別同時繼承多個基類的成員,更好的軟體重用可能會有大量的二義性,多個基類中可能包含同名變數或函數多重繼承中解決訪問歧義的方法:基類名::資料成員名(或成員函數(參數表))明確指明要訪問定義於哪個基類中的成員 C++ Code 12345678910111213141516171819202122232425262728293031
Time of Update: 2018-12-05
一、標準庫的vector類型vector是同一種類型的對象的集合 vector的資料結構很像數組,能非常高效和方便地訪問單個元素vector是一個類模板(class template) template < class Type, class Allocator = allocator<Type> >class vector要使用vector必須包含相關標頭檔#include <vector>using
Time of Update: 2018-12-05
一、用模板實現單例模式在前面的文章中,用過多種方法實現單例模式,現在用模板方式來實現:Singleton.h: C++
Time of Update: 2018-12-05
在前面文章中使用過幾次String類的例子,現在多重載幾個運算子,更加完善一下,並且重載流類運算子。[]運算子多載+運算子多載+=運算子多載<<運算子多載>>運算子多載String.h: C++
Time of Update: 2018-12-05
回顧前面的文章,實現了一個簡單原廠模式來建立不同類對象,但由於c++沒有類似new "Circle"之類的文法,導致CreateShape 函數中需要不斷地ifelse地去判斷,如果有多個不同類對象需要建立,顯然這是很費神的,下面通過宏定義註冊的方法來實現動態創建對象。Shape.h: C++ Code 123456789101112131415161718192021222324252627282930313233#ifndef _SHAPE_H_#define _SHAPE_H_class
Time of Update: 2018-12-05
去了趟C公司INTview了一下,時間有點久了,該把一些收穫整理一下了,免得以後再犯。1,
Time of Update: 2018-12-05
一、演算法演算法是以函數模板的形式實現的。常用的演算法涉及到比較、交換、尋找、搜尋、複製、修改、移除、反轉、排序、合并等等。演算法並非容器類型的成員函數,而是一些全域函數,要與迭代器一起搭配使用。演算法的優勢在於只需實作一份,可以適應所有的容器,不必為每一種容器量訂製。也可以與使用者定義的容器搭配。演算法尾詞:_if比如find(按某個值來尋找),find_if(按某個條件來尋找)_copy這個尾詞用來表示在演算法中,元素不光被操作,還會被複製到目標區間。比如reverse、reverse_co
Time of Update: 2018-12-05
一、不能自動繼承的成員函數建構函式(包括拷貝建構函式)解構函式=運算子二、繼承與建構函式基類的建構函式不被繼承,衍生類別中需要聲明自己的建構函式。聲明建構函式時,只需要對本類中新增成員進行初始化,對繼承來的基類成員的初始化調用基類建構函式完成(如果沒有給出則預設調用預設建構函式)。衍生類別的建構函式需要給基類的建構函式傳遞參數 C++ Code 1234567891011121314151617181920212223242526272829303132333435363738394041424
Time of Update: 2018-12-05
一、標準庫的map類型使用map得包含map類所在的標頭檔 template < class Key, class Type, class Traits = less<Key>, class Allocator=allocator<pair <const Key, Type> > >class map#include <map> 定義一個map對象: map<string, int> mapTest;/
Time of Update: 2018-12-05
先來看看C標準I/O庫函數是如何用系統調用實現的。 fopen(3) 調用open(2)開啟指定的檔案,返回一個檔案描述符(就是一個int 類型的編號),分配一 個FILE 結構體,其中包含該檔案的描述符、I/O緩衝區和當前讀寫位置等資訊,返回這 個FILE 結構體的地址。 fgetc(3) 通過傳入的FILE *參數找到該檔案的描述符、I/O緩衝區和當前讀寫位置,判斷能否從I/O緩衝 區中讀到下一個字元,如果能讀到就直接返回該字元,否則調用read(2),把檔案描述符傳進
Time of Update: 2018-12-05
1.C標準庫的I/O緩衝區 UNIX的傳統 是Everything is a file,鍵盤、顯示器、串口、磁碟等裝置在/dev 目錄下都有一個特殊的裝置檔案與之對應,這些裝置檔案也可以像普通檔案(儲存在磁碟上的檔案)一樣開啟、讀、寫和關閉,使用的函數介面是相同的。使用者程式調用C標準I/O庫函數讀寫普通檔案或裝置,而這些庫函數要通過系統調用把讀寫請求傳給核心
Time of Update: 2018-12-05
一、IO、流資料的輸入和輸出(input/output簡寫為I/O)對標準輸入裝置和標準輸出裝置的輸入輸出簡稱為標準I/O對在外存磁碟上檔案的輸入輸出簡稱為檔案I/O對記憶體中指定的字串儲存空間的輸入輸出簡稱為串I/O資料輸入輸出的過程,可以形象地看成流從流中擷取資料的操作稱為“提取”(輸入)操作向流中添加資料的操作稱為“插入”(輸出)操作標準輸入輸出資料流檔案流字串流二、流類庫繼承體系、四個輸入輸出對象流庫具有兩個平行的基類、向緩衝:streambuf 和 ios
Time of Update: 2018-12-05
一、RTTIRun-time type information (RTTI) is a mechanism that allows the type of an object to be determined during program execution.There are three main C++ language elements to run-time type information:The dynamic_cast operator. Used for conversion