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

2024年11月28日 08:47
有3个网友回答
网友(1):

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

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

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

网友(2):

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 *pB;
}

void main()
{
A a = new A;
delete a;
}

网友(3):

结构体是C语言的一种说法,其实在C++中采用的类跟结构体是差不多的.
结构体也可以有函数的.
结构体与类最大的区别在于:封装