C++ 04 —— 構造函數

源碼

// 04Constructor.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"

class Test
{
    int i;
    int j;
public:
    //class 內部,默認存在一個構造函數,形如以下,但是,一旦人爲寫出任意一個構造函數,默認構造就消失了
    Test(){}
    Test(int ai){}
    Test(int ai,int aj){}
    //類的構建者,應該儘可能的考慮各種對象產生的可能性,寫出儘量多的構造函數
};


//注意:構造函數的職責就是初始化data member,不要在構造函數中做“與構造無關”的操作
//思考:構造函數可以是虛函數嗎?
//注意:stack和heap的區別,什麼樣的對象創建在stack?什麼樣的對象創建在heap?
int main(int argc, char* argv[])
{
    printf("Hello World!\n");
    return 0;
}

思考:構造函數可以是虛函數嗎?

構造函數不能爲虛函數,而析構函數可以且常常是虛函數

注意:stack和heap的區別,什麼樣的對象創建在stack?什麼樣的對象創建在heap?

棧區(stack)由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。
堆區(heap)一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章