读书人

送分啦 不料翻书 直接问你们啦

发布时间: 2012-10-10 13:58:11 作者: rapoo

送分啦 不想翻书 直接问你们啦
比如一个基类

class A
{
public:
A();
~A();
private:
void kill();
};

void A::kill()
{
delete this;
}

我这样使用 A *a=new A();
这样销毁 a->kill();
正确么?会不会有什么问题?


[解决办法]
有点怪怪的
[解决办法]
楼主 为什么不用析构函数呢 自己编写函数。

[解决办法]
当然会有问题,怎么能自己删除自己啊。而且Kill函数还是私有的,这也太新手了吧
[解决办法]
上面的不行,但是你之前发的是OK的。
[解决办法]
析构函数不用显式调用的。程序结束的时候对象会自己调用。
你上面那种用法有点非主流。不过运行没有错误。
[解决办法]

探讨
比如一个基类

class A
{
public:
A();
~A();
private:
void kill();
};

void A::kill()
{
delete this;
}

我这样使用 A *a=new A();
这样销毁 a->kill();
正确么?会不会有什么问题?

[解决办法]
kill函数式私有的。能直接调用吗?
[解决办法]
this 不用自己释放吧!
[解决办法]
弱弱的问一句,执行delete 不也是调用析构函数么
[解决办法]
delete this;
这用法是可以的。在MFC的非模式对话框中,确确实实需要用delete this来释放自己。
[解决办法]
有kill 方法,最好再加一个static 的创建方法,在这个方法里new 对象,然后把构造私有化。这样可以提供类的安全性
[解决办法]
kill方法没有什么问题,COM中的release就是这么用的。不过这种写法一般不用,你这么写的目的是什么啊?
[解决办法]
私欲函数肯定不能用。但这种用法让我感觉心里没底,实在是不习惯

读书人网 >C++

热点推荐