c++的“++”是自增的意思,c++是C語言的基礎上假了部分內容。
第一個+ | 增加了模板template<>,異常處理現代語言處理新特性 |
第二個+ | 增加了增加了面向對象思想 |
面向對象可以看做:屬性(數據)+行爲(函數)。
面向對象 | ||
封裝 | 繼承 | 多態 |
將數據、算法捆綁形成對象。 | 代碼的重用,充分利用已存在的類別。 | 不同情況下具有不同形式的能力,實現了共享外部接口。 |
類成員訪問控制: | public | 構造函數、析構函數、公有訪問接口 |
protected | 自身訪問、下級子類訪問 | |
private | 僅自身可訪問 |
抽象封裝:將現實事物轉變爲c++中的各個類。
c++對象的內存模型:
對象的第一個成員變量地址跟整個對象的地址相同,類的成員函數放在特殊位置(),所有對象共用這份成員函數。
this指針隱式的指向類成員變量。當我們在成員函數中訪問類的成員變量時,this指針指向的是調用這個函數的對象。所以對成員變量的訪問也就變成了對這個對象所屬的成員變量的訪問。
指針的運算:指針加一或減一會使指針增加減少對應數據類型的長度。
傳指針 | 效率高、可以同時傳入傳出參數 |
傳值 | 形式簡單自然便於理解、代碼可讀性高 |
傳引用 | 效率高、可以同時傳入傳出參數、形式簡單自然便於理解、代碼可讀性高 |
*儘可能的使用引用不得已時才使用指針。
異常處理:
關鍵字:throw--------拋出一個描述了錯誤信息的字符串異常。
關節字:catch--------捕獲throw拋出的字符串異常並對其進行處理。
預處理:用頭文件的內容替換掉源文件中對應的#include語句。
名字空間:在一些大型系統中,因爲多數人共同參與開發,即使採用源文件頭文件分離的方法,也難以保證函數數據聲明的唯一性,爲解決這個問題,c++提供了名字空間(namespce)來規劃和管理程序結構。
宏定義:#define 標識字符串
將代碼中的宏名換成宏定義的字符串。
const: 使用const關鍵字可以使編譯器檢測出對常量的非法操作,以防止常量被修改。
//聲明一個整型常量並賦初值爲1
const int number = 1;
//聲明一個Teacher類型的常量的對象
const Teacher MrChen;
//聲明一個常量整型指針,指針所指向的變量的值不能修改,也就是一個常量
const int * pumber ;
// 聲明一個常量整型指針,意義同上
int const *pNumber;
//聲明一個整型常量指針,指針不能修改
int * const pNumber = &number;
//聲明一個常量整型常量指針
//指針和指針所指向的變量值都不能修改
const int * const pNumber = &number;
//聲明一個常量整型引用
const int & number = number;
*號把聲明語句分割成兩個部分。*const指針不能修改,const*指針指向的變量值不能修改。
STL標準模板庫
STL = 算法 + 容器 + 迭代器
從廣義上有算法(algorithm)、容器(container)、迭代器(iterator)三大核心
此外還有適配器(container adaptor)、函數對象(functor)、
函數模板:typename
template <typename T>
通用算法:以迭代器類型爲參數,和數據所在容器的具體實現相互相分離