原创 第十六章 string類和標準模板庫(1)string類

(一)string類1.頭文件string類是由頭文件string支持的,傳統的string.h和cstring僅支持傳統的c風格字符串(包括字符串的處理函數比如strlen等),但不支持string類。2.構造string對象string

原创 第十六章 string類和標準模板庫(5)函數對象

(五)函數對象函數對象,也叫作函數符functor。函數符是可以以函數的方式與()結合的任意對象,包括函數名,函數指針,重載了()運算符的類對象(也就是定義了比如double operator()(double)成員函數的類)。前面介紹了f

原创 第十六章 string類和標準模板庫(4)泛型編程

(四)泛型編程STL是一種泛型編程,面向對象的編程關注的是數據結構,而泛型編程關注的是算法。它們的共同點是抽象和創建可重用代碼。1.迭代器基於算法的要求,來設計基本迭代器的特徵和基本容器的特徵。容器類模板是將算法獨立於存儲的數據類型,而迭代

原创 第十六章 string類和標準模板庫(6)算法

(六)算法STL包含了許多處理容器的非成員函數,它們都使用迭代器來標識要處理的數據區間和結果存放的位置,有些函數還接受一個函數對象參數,用它來處理數據。常見的算法有copy,sort,random_shuffle,find等。算法函數的特點

原创 第十六章 string類和標準模板庫(3)標準模板庫

(三)標準模板庫標準模板庫STL,standard template library,STL是1994年發佈,ISO/ANSI c++委員會投票將其作爲c++標準的一部分。STL不是面向對象的編程,而是一種不同的編程模式,泛型編程gener

原创 第十六章 string類和標準模板庫(2)智能指針模板類

(二)智能指針模板類 智能指針是行爲類似指針的類對象,但這種對象還有其他便於管理內存的功能。1.使用智能指針(1)三個智能指針模板auto_ptr,shared_ptr,unique_ptr,都定義了類似指針的對象,可以將new獲得的地址賦

原创 第十六章 string類和標準模板庫(7)其他庫

(七)其他庫c++還提供了其他一些類庫,比如頭文件<complex>爲複數運算提供了類模板complex,包含用於float,long,long double的具體化,這個類庫提供了標準的複數運算和能夠處理複數的函數;頭文件<random>

原创 第十二章 類和動態內存分配(3)在構造函數使用new時應注意的事項

(三)在構造函數使用new時應注意的事項(1)如果在構造函數中使用new來初始化指針成員,則應在析構函數中使用delete來釋放內存。(2)new和delete必須兼容,new和delete對應,new name[]和delete []na

原创 第十七章 輸入和輸出文件(1)c++輸入和輸出概論

(一)C++的輸入和輸出概論C語言採用stdio.h頭文件來定義標準輸入輸出方法,這在c++中同樣適用,只不過頭文件變爲了<cstdio>。而c++中更常見的類是由頭文件<iostream>,<fstream>定義的輸入輸出流類庫和文件輸入

原创 第十三章 類繼承(4)c++的三種繼承方式

(四)c++的三種繼承方式c++有三種繼承方式,分別是公有繼承,私有繼承和保護繼承。(1)公有繼承這是最常用的一種繼承方式,建立的就是is-a的關係。公有繼承中,派生類可以使用基類的公有成員,但不能訪問私有成員。公有繼承不改變基類的publ