类的new和delete

classa{public:a();~a();}voidmain(){a*p;p=newa();。。。到这一步,程序没有结束,但类a没用了,我想释放他可以吗?非得等到程序... class a
{
public:
a();
~a();
}
void main()
{
a *p;
p=new a();

。。。
到这一步,程序没有结束,但类a没用了 ,我想释放他可以吗?
非得等到程序结束?
可不可以
p->~a();
然后delete p;
。。。
。。。

}

(程序未结束前,我想释放一个类怎么办?)
如果它没用,
也得留到程序结束,才能释放?是这意思吗?怕影响效率
有没有别的思路?没有用时让他消失?
展开
 我来答
BIRDCHILD
2008-06-28 · 超过15用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:47.8万
展开全部
在C++中如果使用new关键字来创建对象,可以使用关键字delete来释放对象所占内存空间。而析构函数是在对象被释放的时候执行,当然作为类的成员函数也可以显式调用析构函数。所以在delete之前没有必要调用析构函数
其实,具体的来说类在内存中是不占用空间的,只有类的对象才占用内存空间。类只是对有共同属性的对象的一种抽象。当你创建一个对象,对象中只包含非静态的数据成员,至于静态数据成员当然存放在在静态内存区中,至于一个类的成员函数(成员方法)在程序的编译阶段就已经装载到内存的代码段,只有当程序运行完毕才会释放代码段的所有数据。当然静态数据也只在程序运行完毕才会被释放。所以说类是不可能被释放的。

换句话说你如果想释放类,那么只能说明你对类和对象的概念理解有问题。举个例子:“他杀死了一个人”,你当然不能说成是“他杀死了一个人类”。要记住类是抽象的,有怎么可以销毁呢?

参考资料: 自己写的

寰子1989
2008-06-28 · 超过46用户采纳过TA的回答
知道答主
回答量:135
采纳率:0%
帮助的人:0
展开全部
用delete删除指针时,析构函数将自动被调用,不需要写
p->~a();

直接delete p就可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ggdmdf
2008-06-28 · TA获得超过1520个赞
知道小有建树答主
回答量:1024
采纳率:0%
帮助的人:1237万
展开全部
类的构造和析构函数是由编译器自动调用的,不要显式调用.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式