司徒正美
棧對象相當局部對象,堆對象相當於一種能共享於各函數或語句塊的對象。棧對象在語句塊執行完就自動銷毀,堆對象需要手動銷毀。
#include <iostream>
using namespace std;
struct Object{
//★★★★構造函數和類型同名,沒有返回值類型
Object(){
cout <<"這是構造函數"<<endl;
}
//析構函數名字為類型名前面加一波浪字符;另外也沒有返回值類型。
~Object(){
std::cout << "這是構析函數!" << endl;
}
};
int main(){
//定義一個對象,就相當在其間調用到該對象的構造函數
Object o;
{
Object o1;//用棧對象來測試構析函數,語句塊結構時自然會銷毀局部變量
Object *o2 = new Object;//定義堆對象
// delete o2;//手動銷毀堆對象
}
while(1);
}
銷毀堆對象
#include <iostream>
using namespace std;
struct Object{
//★★★★構造函數和類型同名,沒有返回值類型
Object(){
cout <<"這是構造函數"<<endl;
}
//析構函數名字為類型名前面加一波浪字符;另外也沒有返回值類型。
~Object(){
std::cout << "這是構析函數!" << endl;
}
};
int main(){
//銷毀堆對象
Object* o1;
{
o1 = new Object;
}
delete o1;
while(1);
}