C++中构造函数和析构函数

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在前面的《关于C++中的new》,我犯了一个很白痴的错误:new是一个用来动态分配内存的操作,而成员函数是静态分配内存的。new一个对象,只是给他的成员变量分配动态空间。

为了了解构造函数和析构函数,写了下面的程序:

class myclass

{

public:

myclass();

~myclass();

void myfun();

private:

int member;

};

myclass::myclass()

{

cout<<"myclass()"<<endl;

}

myclass::~myclass()

{

cout<<"~myclass()"<<endl;

}

void myclass::myfun()

{

member = 8;

cout<<"myfun out : "<<member<<endl;

}

int _tmain(int argc, _TCHAR* argv[])

{

void test1();

void test2();

void test3();

cout<<"test1():"<<endl;

test1();

cout<<"test2();"<<endl;

test2();

cout<<"test3():"<<endl;

test3();

getchar();

return 0; return 0;

}

void test1()

{

myclass _myclass;

_myclass.myfun();

}

void test2()

{

myclass* _myclass = new myclass();

_myclass->myfun();

}

void test3()

{

myclass* _myclass = new myclass();

_myclass->myfun();

delete _myclass;

}

//////----------------输出----------------------------------/////

test1():

myclass()

myfun out : 8

~myclass()

test2();

myclass()

myfun out : 8

test3():

myclass()

myfun out : 8

~myclass()

结论:

如果定义了一个非指针型的对象变量(这么叫准确吗?),那么编译器会自动在变量的周期内调用构造函数和析构函数,如果new了对象,定义了指针变量,则必须用delete.那么,可不可以说:new 和 delete必须成对出现呢?应该是这样吧!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航