close

宣告class的變數會用到,如果沒有寫,

系統會有一個"預設建構子",

但是當你有寫建構子時,就會去除,

還有class的預設是private,一定要寫在public不然會錯,

test() = default; 來建立一個預設建構子,

就跟 test(){}是一樣的,看個人用法,

接下然是給值方式,相同名稱一般都會用this.a = a ,

但是也可以用 test(int a, int b):a(a),b(b){} ,很方便的,

這也是看個人用法,然後this這個keyword,

是指標, test *t = this; ,

接下來解建構子 ~test(),就只會有一個,

不能有參數,會在物件銷毀執行,在這就是在return 0; 執行。

 

 

#include <iostream>

class test{

public:
    int a;
    float b;
    
    test() = default;
    
    test(int a, float b):a(a),b(b){} //給值方式

    test(int a){

        test * t = this; //this的真面目

        t->a=a; //給值方式
        (*t).a=a;
        this->a =a;
    }

    ~test(){std::cout<<"hello"<<std::endl;} //解建構子,不能有參數
    
};

int main(){

    test t1();

    test t2(45);
    
    test t3(45, 12.5f);

    return 0; //~test() 在這執行,由於有3個test的變數,所以會執行~test()三次
}

 

記得有一次在寫時忘記把test() = default;寫在public裡面,

結果執行一直不過,就是因為那一點小缺失,那時的我真的把他,

忽略掉了,所以切記切記。。:.゚ヽ(*´∀`)ノ゚.:。

 

 

arrow
arrow
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()