C++对类的认识 以及构造函数和析构函数的深入理解

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:33:52
我学C++已经两个多月了。 但我觉得到现在为止,我不没有对类有一个深入认识。。
1---我现在对类和对象的认识还停留在认为类就和一个结构差不多,不同的就是类里有函数,可以操作里面的数据成员::而对象就是具体的一个结构变量,不同就是里面多了函数,比结构更高级了,呵呵~~ 我认为这样的理解很不成熟,想听听各位老师的看法.....
2---具体有两个问题在这里我想再让老师帮我解答一下:
书上说当一个对象消亡时,或用delete删除用new创建的对象时,系统都会自动调用类的析构函数做一些清理工作。它的调用完了之后,对象就消失了,相应地,内存空间也就被释放了。*******我的理解是对象消亡就是对象的存储空间被释放,具体的就是对象的数据成员占的空间被释放了。既然这样对象的数据成员所占空间在程序结束时那自然会被释放(若是指针的话那用delete释放了不就也就可以了吗??)。。。这样不用析构函数对象不也被释放了吗??可是上也说到了,,书上说的是当析构函数调用完之后,对象才消失,相应地内存空间也被释放。。怎么理解呢???
3---后来书上又说了,如果不显示地定义一个析构函数,系统也会生成一个默认的析构函数,它是个空的析构函数,不做任何事情。*****问题又来了。。真的是不做任何事情吗??那企不是析构函数就没什么用?》》请教一下老师
这个析构函数到底是个什么东东,它在程序里面干什么,而且还少不了它了?

4---还附带问一下,构造函数应该不只是给数据成员赋值这么简单吧??可以简单也说一下构造函数在程序中做了些什么吗??

小生在这里先谢谢各位帮我解答的老师了!!

析构函数主要作用是销毁动态分配的成员对象和额外的"当类对象销毁时需要进行的动作".
构造函数主要作用是成员对象的初始化和"类对象创建时需要进行的动作".

C语言中变量未初始化和内存泄露都是严重的错误根源,并且调试时难以发现.所以C++类引入了构造函数和析构函数,用于给所以成员初始化和销毁动态创建的成员.通过类对象定义时自动调用构造函数和类对象所在作用域结束时(静态类对象除外)自动调用析构函数来防止这两种错误.

还有初始化的赋值不是一回事.
比如下面的代码:
int i=0;
int *p;
p=&i;
一般编译器会给警告,使用了未初始化的指针p;
但是
int i=0;
int *p=&i;
就不会给出警告.

1.结构体是C语言的一种说法,其实在C++中采用的类跟结构体是差不多的.
结构体也可以由函数的.
他们在结构上的区别就是在结构体里的成员默认是public,但类默认是private.
2.析构函数并不是用来销毁对象,而是用来处理一些后序工作,比如你在A这个类里new了B类的对象,这时候你就希望delete A类对象了之后B类对象也跟着销毁.这时就可以在A的析构里delete B.

3.构造函数和析构函数的作用:
构造函数就是说这个类初始化时要先做些初始化工作.你可以在这里给成员赋值,也new 别的对象等等.析构就是做些打扫垃圾的工作,如果你没生产垃圾,析构对你来说就没啥作用了.

以下举个例子给你看看.
class B
{
public:
B()
{
}
~B()
{
}
}

class A
{
pubilc:
A()
{
pB = new B;
}
~A()
{
delete pB;
}

private:
B *