建構函式的魔力

2021-08-17 06:56:00 字數 1545 閱讀 1685

【摘要】c++作為c語言的繼承,具有c語言的一些特性,c++主要是物件導向,因此離不開類的使用,而類的使用和c語言裡面的結構體很像,不過,它比結構體更加靈活。今天我就把使用類時碰到的關於建構函式的知識整理起來,因為建構函式實在是太多變了,我覺得很有必要寫出來,希望可以幫助到你們。

類為什麼不能進行初始化?

因為類就像結構體一樣只是進行了宣告,並沒有實際的開闢空間,所以無法對資料成員進行初始化,這時候要想初始化只能借助建構函式

什麼是建構函式?

物件的初始化

在c++裡面,宣告乙個類時,並不能直接進行初始化,這時候,你要還是想初始化該怎麼辦呢?這就要用到建構函式了。

建構函式進行物件的初始化可謂是得心應手,但是建構函式的形式實在是太多了,所以我決定分幾種型別進行說明

1.在建構函式內部直接進行初始化

雖然c++的語法就是不允許類直接進行初始化,但是它又增加了乙個建構函式來間接初始化,關鍵是這個建構函式是相當的好用啊。我剛上手幾天就感覺到了,哈哈哈,初學者的福音。廢話不多說,先將**放在下面,稍後解釋

無參建構函式,最簡單的一種

class student

上面這種事最簡單的,你可以把它這樣認為,建構函式是會自動生成的,但是這一步你並不能看到,而你顯式地把它寫出來,是為了方便理解,因為c++編譯器會做很多我們看不到的內部操作,這樣做事為了新手更好的理解。

class

box//定義乙個有參的建構函式,用引數的初始化表對資料成員初始化

上面應該很好理解吧,畢竟我也是個初學者,但是還是很容易看懂呢。

抓住乙個點,自動呼叫,所以這種型別的建構函式就是在定義乙個類之後,將類裡面的物件直接賦初值

再來接著看下面這種

box::box(int h,int w,int

len)//類外定義無參建構函式box

這是在類外定義的無參建構函式,這點和在類外定義成員函式是類似的,都需要在類體中先進行宣告。類外定義的無參建構函式,它的運作機制大概是下面這樣的

1.在定義物件時,就已經將實參給出

2.在建立物件時,編譯器要做的就是把實參的值傳遞給建構函式相應的形參然後把他們直接作為資料成員的初值

記住,這裡的初始化相當於是主函式中完成的,只是將實參傳了過去。

建構函式的引數列表

如上所述,建構函式可以通過實參傳遞給建構函式的形參,從而完成初始化,其實,他還可以將初始化變成多種形式

box box1;

cout<<"the volume of box1 is"

cout<<"the volume of box2 is"

cout<<"the volume of box2 is"

cout<<"the volume of box2 is"

<

時間的魔力

曇花的一瞬,老龜的千年.一輩子庸庸碌碌,在x歲才撒手人寰,人們說 她 他活了x年!壽命的長短真的豈能如此計算 人皆有自己的標準,道德觀 人生觀 社會觀 乃至宇宙觀。心中曾經的鑽石,曾幾何時被拋進了雜草叢生的亂石崗。宇宙容者無疆,形形色色的人生都能在裡面找到自己的居所。幾何時,我們被周圍的紛繁擾亂了自...

內心的魔力

我曾經很在乎別人的看法,別人的喜怒哀樂,我得了獎,看到父母高興的樣子,我很激動,我很高興。從小學到高中,獎狀榮譽不斷,這種在別人的讚許中,我似乎所有努力只是為了繼續維護自己在別人眼中的形象。我家在農村,但是我從小到大,我總感覺我必須做乙個好學生 好兒子。就這樣,鄰里親朋都知道我學習好,這就是農村,每...

mysql UDF trigger的神奇魔力

1.什麼是udf?udf user defined function 是mysql為使用者提供的自定義函式的擴充套件介面。它本質上和mysql提供的max min和count等函式類似。2.udf可以做什麼?udf是自定義函式,所以它能做什麼完全取決於你的實現。udf可以在普通的sql trigge...