1. 程式人生 > >(C++)C++類繼承中的建構函式和解構函式

(C++)C++類繼承中的建構函式和解構函式

#include <iostream>
using namespace std;

class Shape{
public:
    void Draw() {cout<<"Base::Draw()"<<endl;}
    void Erase() {cout<<"Base::Erase()"<<endl;}
    Shape() {Draw();}
    ~Shape() {Erase();}
};
//-------------------------------------------------
class Polygon:public Shape{
public:
    Polygon() {Draw();}
    void Draw() {cout<<"Polygon::Draw()"<<endl;}
    void Erase() {cout<<"Polygon Erase()"<<endl;}
    ~Polygon() {Erase();}
};
//--------------------------------------------------
class Rectangle:public Polygon{
public:
    Rectangle() {Draw();}
    void Draw() {cout<<"Rectangle::Draw()"<<endl;}
    void Erase() {cout<<"Rectangle Erase()"<<endl;}
    ~Rectangle() {Erase();}
};
//--------------------------------------------------
class Square:public Rectangle{
public:
    Square() {Draw();}
    void Draw() {cout<<"Square::Draw()"<<endl;}
    void Erase() {cout<<"Square Erase()"<<endl;}
    ~Square() {Erase();}
};
//--------------------------------------------------
int main(){
    Polygon c;
    Rectangle s;
    Square t;
    cout<<"------------------------------------------"<<endl;
    return 0;
}

相關推薦

C++C++繼承建構函式和解函式

#include <iostream> using namespace std; class Shape{ public: void Draw() {cout<<"Base::Draw()"<<endl;} void Erase() {co

c++成員物件建構函式和解函式的執行順序

#include <iostream> using namespace std; class b{ public: b(){ cout<<"b gou zao han shu"<<endl; } ~b(){ cout<

C#繼承建構函式的執行序列

不知道大家在使用繼承的過程中有木有遇到過呼叫建構函式時沒有按照我們預期的那樣執行呢?一般情況下,出現這樣的問題往往是因為類繼承結構中的某個基類沒有被正確例項化,或者沒有正確給基類建構函式提供資訊,如果理解在物件生命週期的這個階段發生的事情,將更利於解決此類問題。 為了例項化派生的類,必須先例項化它的基類。而

派生建構函式和解函式C++學習筆記 32

  引入繼承的目的:①派生類繼承了基類的成員,實現了原有程式碼的重用。②實現程式碼的擴充,只有在派生類中通過新增新的成員,加入新的功能,類的派生才有實際意義。   基類的建構函式和解構函式不能被繼承,在派生類中,如果對派生類新增的成員進行初始化,就需要加入派生類的建構函式,同時,對所有從基類

C++習題——橢圓拷貝建構函式和解函式

Description(1)拷貝(複製)建構函式的實現。在上一題(橢圓類——1)的基礎上,增加一個拷貝建構函式。函式原型格式:Ellipse(const Ellipse & e);(2)增加Show()函式,顯示橢圓的外切矩形的頂點座標。(3)增加一個成員函式Fun(

C++繼承建構函式和解函式的呼叫順序

class Fish:public Animal { public: Fish() { cout<<"this is Fish"<<endl; } ~Fish() { cout<<"this is free Fish"<<en

多重繼承建構函式和解函式的執行順序包含虛基

C++程式碼: #include <iostream> using namespace std; class A { public: A() { co

java學習java繼承

author java學習 dex int demo [] color javac print 1.制作一個工具類的文檔 javadoc -d 目錄 -author -version arrayTool.java 實例: class arrayDemo {

派生建構函式和解函式和多繼承的二義性與虛擬函式

解構函式主要作用是對資料成員初始化。 1派生類的建構函式 派生類的建構函式定義的一般形式為: 派生類名::派生類名(基類所需形參,本類成員所需形參):基類1(基類1 引數表),基類2(基類2 引數表),···,基類n(基類n 引數表),物件成員1(物件1 引數表),物件成員2(物件2 引

C++建構函式和解函式

1:建構函式 處理物件的初始化。特殊的成員函式,不需要使用者來呼叫,而是在建立物件的時候自動執行。 特點: ①與類名相同 ②沒有任何返回型別 ③定義時可以有引數,可以無引數 2:解構函式 語法 :~cl

C++ 建構函式和解函式能不能被顯示呼叫

                程式碼: view plaincopy to clipboardprint?#include <iostream>   using namespace std;     class A   {   public:       A()       {         

C++進階--建構函式和解函式的虛擬函式

//############################################################################ /* 任何時候都不要在建構函式或解構函式中呼叫虛擬函式 */ class dog { public: string m_name

C++建構函式和解函式丟擲異常問題

一. 丟擲異常 1.1 丟擲異常(也稱為拋棄異常)即檢測是否產生異常,在C++中,其採用throw語句來實現,如果檢測到產生異常,則丟擲異常。 該語句的格式為: throw 表示式; 如果在try語句塊的程式段中(包括在其中呼叫的函式)發現了異常,且拋棄了

C++派生建構函式和解函式執行順序及其構造形式

    在C++程式設計師的面試中,經常會出現派生類與基類的建構函式、解構函式的執行順序。其實這是一個很基本的問題,沒有什麼難度,只需要記住就OK了。      1.派生類的建構函式和解構函式的執行順序     首先執行基類的建構函式,隨後執行派生類的建構函式,當撤銷派生類物件時,限執行派生類的解構函

C++】的六大預設的成員函式 之 解函式以及建構函式和解函式的呼叫順序

                                              解構函式 一.解構函式定義               解構函式也是特殊的成員函式,他的作用和建構函式相反。 class Box { public: //建構函式 Box(i

C++建構函式和解函式可以丟擲異常嗎?

一.建構函式 1. 建構函式中丟擲異常,會導致解構函式不能被呼叫,但物件本身已申請到的記憶體資源會被系統釋放(已申請到資源的內部成員變數會被系統依次逆序呼叫其解構函式)。 2. 因為解構函式不能被呼叫,所以可能會造成記憶體洩露或系統資源未被釋放。 3. 建構函式中可以丟擲異

C++之派生建構函式和解函式呼叫順序

派生類的建構函式只負責對派生類新增的成員進行初始化,對所有從基類繼承下來的成員,其初始化工作還是由基類的建構函式完成。 派生類的資料成員是由所有基類的資料成員與派生類新增的資料成員共同組成的。如果派生類新增資料成員中包括有內嵌的其他類物件,派生類的資料成員中實際上還間接包括

建構函式和解函式的呼叫順序

知識點一 關於類的建構函式和解構函式: 1、建構函式不必須與類名相同,不具有型別,不返回任何值。 2、建構函式可以過載、便於使用者輸入不同型別的引數。 3、預設建構函式為不含任何引數的建構函式

C++建構函式和解函式顯式呼叫的方法

C++ new用法的正確方法應該如何操作?在這篇文章中我們將會根據其兩種不同的含義分別介紹一下它的影音方法,希望能給大家帶來一些幫助。C++程式語言中有一種叫做new的術語。不過這一概念是比較模糊的,有些人把它理解為new函式,但是有的人又會把它理解為new運算子。那麼它的真正含義又是如何的呢?在這裡我們將會

的使用和物件,建構函式和解函式

最近c艹在學類與物件 擅長划水的我並沒有聽課,害,所以東西有點雲裡霧裡, 所以寫下這一篇部落格來理解一下。   類的使用就像是封裝一類的東西,定義為一個類 定義的地方和結構體其實還是有點相似的。 這東西在演算法裡面用的感覺不多, 以前也沒接觸過, 現在發現實際運用還是很有意思的。   首