原创 c++基礎複習——程序的內存模型

1.內存分區模型 代碼區:存放函數體的二進制代碼,由操作系統進行管理 全局區:存放全局變量和靜態變量以及常量 棧區:由編譯器自動分配和釋放,存放函數的參數值,局部變量等 堆區:由程序員分配和釋放,若沒有釋放,程序結束時由操作系統回收 2.

原创 c++基礎複習——菱形繼承以及解決方法

#include <iostream> using namespace std; class Animal { public: int m_age; }; //利用虛繼承可以解決菱形繼承 //animal稱爲虛基類 class S

原创 c++基礎複習——多態的純虛函數和抽象類

在多態中,通常父類中的虛函數的實現是毫無意義的,主要都是調用子類重寫的內容 因此可以把虛函數改爲純虛函數 當類中有了純虛函數,這個類也叫做抽象類 抽象類的特點: 無法實例化對象 子類必須重寫抽象類中的純虛函數,不然也屬於抽象類 clas

原创 c++基礎複習——多態的基本概念

1.多態的基本概念 多態分爲兩類: 靜態多態:函數重載和運算符重載屬於靜態多態,複用函數名 多態多態:派生類以及虛函數實現運行時多態 靜態多態和動態多態的區別: 靜態多態的函數地址早綁定,編譯階段確定函數地址 動態多態的函數地址晚綁定,運

原创 c++基礎複習——繼承同名成員的處理方式

1.當子類與父類出現同名的成員時 訪問子類的同名成員,直接訪問 訪問父類的同名成員,需要加作用域 子類與父類擁有同名的成員函數的時候,子類會隱藏父類的成員函數,需要加上作用域訪問父類的同名函數 2.當同名的成員是靜態成員的時候 #in

原创 c++基礎複習——繼承的基本語法與方法

1.繼承的基本語法 class 子類 : 繼承方式 父類 class son:public father 繼承的作用是:減少重複代碼 2.繼承的方式 公共繼承 保護繼承 私有繼承  

原创 c++基礎複習——友元

在程序中,有時候我們需要類外的特殊函數或者類也可以訪問私有熟悉,這時候就要友元技術 友元的目的就是讓一個函數或者類能夠訪問另一個類中的私有成員。 友元的三種實現: 全局函數做友元 類做友元 成員函數做友元 #include <iostr

原创 c++基礎複習——繼承的對象模型以及構造析構順序

1.繼承的對象模型 父類中的所有非靜態成員屬性都會被繼承下去(沒有this指針的都不會被繼承,無論基類派生了多少子類,派生類對象都引用這個相同的、單一的、共享的靜態成員。靜態成員只存在一個實例。靜態變量是共享而不是繼承,他可以被子類共享但

原创 c++基礎複習——封裝

1.封裝的意義 c++面對對象的三大特性爲:封裝,繼承和多態 封裝的意義: 將屬性和行爲作爲一個整體,表現生活中的事物 將屬性與行爲加以權限控制 2.訪問權限 公共權限 public  成員 類內可以訪問   類外可以訪問 保護權限 pr

原创 c++基礎複習——c++對象模型和this指針

1.在c++中,成員變量和成員函數分開存儲 只有非靜態的成員變量才屬於類的變量上,成員變量和成員函數是分開存儲的 當定義一個空類,求空類的大小 #include <iostream> using namespace std; clas

原创 c++基礎複習——類的靜態成員

靜態成員就是在成員變量和成員函數前加上關鍵字static,稱爲靜態成員 1.靜態成員變量 所有對象共享同一份數據 在編譯階段分配內存 類內申明,類外初始化 2.靜態成員函數 所有對象共享一個函數 靜態成員函數只能訪問靜態成員變量 #i

原创 c++基礎複習——拷貝構造函數

1.拷貝構造函數的調用時機 使用一個已經創建完的對象來初始化另一個對象 值傳遞的方式給函數參數傳參 以值的方式返回局部對象 #include <iostream> using namespace std; class Person {

原创 c++基礎複習——函數提高

1.函數默認參數 c++中,函數的形參列表中的形參是可以由默認值的 #include <iostream> using namespace std; //如果我們傳入數據,就用自己的數據,否則使用默認參數 //返回值類型 函數名 (形

原创 c++基礎複習——對象初始化與清理

1.構造函數與析構函數 一個對象如果沒有初始化狀態,那麼他的使用後果是未知的;同樣如果使用完一個對象,沒有及時清理,也會造成一定的安全問題。 c++爲此提供了構造函數以及析構函數,如果我們不提供,編譯器也會自己提供。 構造函數:創建對象時

原创 c++基礎複習——引用

1.引用的基本語法 作用:給變量起別名 語法:數據類型 &別名 = 原名 2.引用的注意事項 引用必須初始化 引用在初始化之後,不可以發生改變 3.引用作爲函數參數 #include <iostream> using namespa