11-建構函式

東閣堂主發表於2019-02-13

寫在前面

建構函式(也叫構造器),寫移動端的經常用
複製程式碼

名詞解釋

建構函式(也叫構造器),在物件建立的時候自動呼叫,一般用於完成物件的初始化工作
複製程式碼

碼上建功

struct Person {
    int m_age;
    //初始化方法,不帶引數
    Person() {
        cout << "Person()" << endl;
        // this->m_age = 0;
        //memset函式是將較大的資料結構(比如物件、陣列等)記憶體清零的比較快的方法
        memset(this, 0, sizeof(Person));
    }
    //初始化,帶引數
    Person(int age) {
        //此時不能用this.m_age訪問,因為this是指標型別
        this->m_age = age;
        cout << "Person(int age)"<< age << endl;
    }
};

int main() {
    // 棧空間
    Person person1; // Person()
    Person person2(); // 函式宣告,函式名叫person2,無參,返回值型別是Person
    Person person3(20);  // Person(int age)
    
    // 堆空間
    Person *p1 = new Person; // Person()
    Person *p2 = new Person(); // Person()
    Person *p3 = new Person(30);  // Person(int age)
}
後面註釋寫明瞭呼叫哪一個初始化構造器
列印結果
Person(int age)20
Person()
Person()
Person(int age)30

複製程式碼

裝逼一下

函式名與類同名,無返回值(void都不能寫),可以有引數,可以過載,可以有多個建構函式
一旦自定義了建構函式,必須用其中一個自定義的建構函式來初始化物件
通過malloc分配的物件不會呼叫建構函式
複製程式碼

完整程式碼demo,請移步GitHub:DDGLearningCpp

當然C++大神就繞吧,非喜勿噴,畢竟這是個人的學習筆記?

相關文章