日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 派生类 构造,C++派生类的构造函数和析构函数

發布時間:2023/12/4 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 派生类 构造,C++派生类的构造函数和析构函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

派生類對象中包含基類對象,因此派生類對象在創建時,除了要調用自身的構造函數進行初始化外,還要調用基類的構造函數初始化其包含的基類對象。因此,程序中任何能夠生成派生類對象的語句,都要說明其包含的基類對象是如何初始化的。

如果對此不做說明,則編譯器認為基類對象要用無參構造函數初始化——如果基類沒有無參構造函數,則會導致編譯錯誤。

在執行一個派生類的構造函數之前,總是先執行基類的構造函數。

和封閉類說明成員對象如何初始化類似,派生類說明基類對象如何初始化,也需要在構造函數后面添加初始化列表。在初始化列表中,要指明調用基類構造函數的形式。具體寫法如下:

構造函數名(形參表): 基類名(基類構造函數實參表)

{

...

}

派生類對象消亡時,先執行派生類的析構函數,再執行基類的析構函數。

下面的程序演示了派生類的構造函數和析構函數的調用順序:

#include

#include

using namespace std;

class CBug {

int legNum, color;

public:

CBug(int ln, int c1) : legNum(ln), color(c1)

{

cout << "CBug Constructor" << endl;

};

~CBug()

{

cout << "CBug Destructor" << endl;

}

void Printlnfo()

{

cout << legNum << "," << color << endl;

}

};

class CFlyingBug : public CBug

{

int wingNum;

public:

//CFlyingBug(){} 若不注釋掉則會編譯出錯

CFlyingBug::CFlyingBug(int ln, int c1, int wn) : CBug(ln, c1), wingNum(wn)

{

cout << "CFlyingBug Constructor" << endl;

}

~CFlyingBug()

{

cout << "CFlyingBug Destructor" << endl;

}

};

int main() {

CFlyingBug fb(2, 3, 4);

fb.Printlnfo();

return 0;

}

程序輸出結果:

CBug Constructor

CFlyingBug Constructor

2,3

CFlyingBug Destructor

CBug Destructor

第 25 行如果沒有注釋掉會編譯出錯。因為這個構造函數沒有說明在派生類對象用該構造函數初始化的情況下,其基類對象該如何初始化——這也就意味著基類對象應該用無參構造函數初始化,可是 CBug 類并沒有無參構造函數,所以編譯會出錯。

第 26 行中的“CBUg(ln, c1)”指明了在派生類對象用該構造函數初始化的情況下,其基類對象的初始化方式。

思考題:派生類對象生成時要先執行基類構造函數,消亡時要先執行自身析構函數,再執行基類析構函數,為什么?

和封閉類的情況類似,如果一個派生類對象是用默認復制構造函數初始化的,那么它內部包含的基類對象也要用基類的復制構造函數初始化。

多層次的派生

在 C++ 中,派生可以是多層次的。例如學生類派生出中學生類,中學生類又派生出初中生類和高中生類。總之,類 A 派生類 B,類 B 可再派生類 C,類 C 又能派生類 D,以此類推。

這種情況下,稱類 A 是類 B 的直接基類,類 B 是類 C 的直接基類,類 A 是類 C 的間接基類。當然,類 A 也是類 D 的間接基類。在定義派生類時,只寫直接基類,不寫間接基類。派生類沿著類的層次自動向上繼承它所有的間接基類。

派生類的成員包括派生類自己定義的成員、直接基類中定義的成員,以及所有間接基類的全部成員。

當派生類的對象生成時,會從最頂層的基類開始逐層往下執行所有基類的構造函數,最后再執行自身的構造函數;當派生類對象消亡時,會先執行自身的析構函數,然后從底向上依次執行各個基類的析構函數。

例如下面的程序:

#include

using namespace std;

class A {

public:

int n;

A(int i) :n(i) { cout << "A " << n << " constructed" << endl; }

~A() { cout << "A " << n << " destructed" << endl; }

};

class B :public A

{

public:

B(int i) :A(i) { cout << "B constructed" << endl; }

~B() { cout << "B destructed" << endl; }

};

class C :public B {

public:

C() :B(2) { cout << "B constructed" << endl; }

~C() { cout << "B destructed" << endl; }

};

int main()

{

C Obj;

return 0;

}

程序的輸出結果:

A 2 constructed

B constructed

B constructed

B destructed

B destructed

A 2 destructed

包含成員對象的派生類

在派生類也是封閉類的情況下,構造函數的初始化列表不但要指明基類對象的初始化方式,還要指明成員對象的初始化方式。

派生類對象生成時,會引發一系列構造函數調用,順序是:先從上至下執行所有基類的構造函數,再按照成員對象的定義順序執行各個成員對象的構造函數,最后執行自身的構造函數;而派生類對象消亡時,先執行自身的析構函數,然后按與構造的次序相反的順序依次執行所有成員對象的析構函數,最后再從底向上依次執行各個基類的析構函數。

總結

以上是生活随笔為你收集整理的php 派生类 构造,C++派生类的构造函数和析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天爱天天射 | 欧美激情视频一区二区三区不卡 | 丰满岳乱妇一区二区三区 | 嫩草伊人久久精品少妇av | 艳妇臀荡乳欲伦交换电影 | 日韩一级免费观看 | 我我色综合| 亚洲码视频| 欧美日韩亚洲第一 | 国产欧美在线视频 | 日少妇的逼 | 性插免费视频 | 豆花在线视频 | 亚洲在线网站 | 天堂av官网 | 四虎中文字幕 | 国产免费福利 | 午夜精品久久久久久久久 | 农村搞破鞋视频大全 | 国产精品九九热 | 在线看a级片 | 色小姐综合网 | 丝袜黄色片 | 中国黄色1级片 | 夜夜春影院 | 午夜毛片在线 | 日本激情一区 | 日本护士做爰视频 | 亚欧成人在线 | 黄色精彩视频 | 国产成人免费观看视频 | 97精品人妻一区二区三区 | 免费av国产 | 一本色道久久综合亚洲精品酒店 | 天堂成人国产精品一区 | 在线欧美日韩 | 日日插插 | 国产一区二区三区视频免费观看 | 国产免费一区二区三区最新不卡 | 粉嫩av渣男av蜜乳av | 色婷婷视频在线 | 国产av国片精品 | 日本新japanese乱熟 | 高清视频一区二区 | 久久网站免费观看 | 亚洲激情三区 | 国产不雅视频 | 在线观看成人网 | 国产一级18片视频 | 日韩毛片免费观看 | 中文字幕在线播放视频 | 亚洲一区播放 | 啪免费视频 | 日韩视频 中文字幕 | 伊甸园精品区 | 锕锕锕锕锕锕锕锕 | 福利资源在线观看 | 美女久久久 | 一区二区三区免费高清视频 | 国产在线精品一区二区 | 亚洲图片一区二区三区 | 久久另类ts人妖一区二区 | 影音先锋色小姐 | www一区| 亚洲视频一区二区 | 日韩中文字幕在线看 | 波多野结衣之双调教hd | 天堂在线视频免费观看 | 欧美综合一区二区 | 国外成人性视频免费 | 天堂在线观看视频 | 成人日韩在线 | 动漫av在线免费观看 | 欧美日韩一级视频 | 黑料av在线 | 亚洲av无码国产精品麻豆天美 | av网子 | 麻豆影视| 欧美成人一区二区三区四区 | 久久久久久逼 | 日本久久一级片 | 午夜精品一区二区在线观看 | 91调教打屁股xxxx网站 | 亚洲黄色片子 | 91视频精品| 日韩一级影院 | 人人干夜夜操 | 九九色在线 | 久久久久久久久国产 | 亚洲色图国产精品 | 国产成人黄色 | 国产精品亚洲视频 | www.国产黄色 | 五月婷婷狠狠 | 久久综合久久综合久久综合 | 国内自拍av| 午夜性福利 | 激情久久中文字幕 | 夜夜骑av |