乙個函式分析多繼承建構函式

2021-08-20 21:23:35 字數 1125 閱讀 3395

類名::類名(形參表)

比如:circle::circle(float r)

類名::類名(形參表):內嵌物件1(形參表),內嵌物件2(形參表)

比如:deriverd(int a,int b,int c,int d):base1(a),member2(d),member(c),base2(b) {}

#include 

using namespace std;

class base1

private:

base1 member1;

base2 member2;

base3 member3;

};int main ()

該程式執**況如下

派生類的建構函式定義如下:

deriverd(int a,int b,int c,int d):base1(a),member2(d),member(c),base2(b) {}

這裡有兩個問題需要注意:首先這裡並沒有列出全部的基類和成員函式,由於base3只有預設建構函式,不需要給他傳遞引數,因此,基類base3以及base3的成員物件member3就不必列出。其次,基類名和成員物件名的順序是隨意的。

程式的主函式宣告了乙個派生類deriverd的物件obj,生成物件obj時呼叫了派生類的建構函式。此建構函式的執**況是先呼叫基類的建構函式,然後呼叫內嵌物件的建構函式。基類建構函式按照派生類定義時的順序,因此應該是base2,base1,base3.而內嵌物件的的構造函式呼叫順序是按照成員在類中宣告的順序,應該是,base1,base2,base3.

此時base1的物件member1傳遞的引數是c,base2的物件member2傳遞的引數是d。

c++中的類是資料和動作的集合,該派生類繼承了三個基類,又呼叫了基類的三個物件,所以該類能夠 「執行6個動作」

派生類的建構函式需要以合適的初值作為引數,其中一些傳遞給基類的建構函式,用於初始化相應成員,另一些引數要用於對派生類新增的成員物件進行初始化。

jQuery建構函式分析

function window,undefined window 我們通過alert jquery 知道它是乙個物件,那麼這個物件是怎麼構造出來的呢?我們使用 document 類似的寫法獲取元素,就好像直接呼叫了普通的方法一樣,jquery就是普通的函式嗎?如果是建構函式為什麼不是 new doc...

建構函式與析構函式分析

include include using namespace std class b b class c c class a a c c b b int main 試驗 如上。輸出結果如下 c b a a b c 為什麼呼叫建構函式的時候先呼叫c,然後b,最後才呼叫a呢?而呼叫函式析構正好相反呢?...

jQuery建構函式init引數分析(一)

的建構函式,jquery 物件中有乙個原型方法 init 才是是真正的建構函式,通過 init 的原型物件跟 jquery 的原型物件保持引用關係使得 init 的例項可以正常呼叫 jquery 的原型方法,就好像是 jquery 的例項一樣。下面就來看看 init 這個幕後的建構函式是怎麼寫的 i...