[英]Is it safe to delete a pointer that was cast from void in C++?
說我在公共標題中有這樣的東西:
class MyClass
{
public:
MyClass();
protected:
virtual ~MyClass();
private:
void *pSomeInternalClass;
}
這是我的實施:
MyClass::MyClass()
{
pSomeInteralClass = (void *) new SomeInternalClass();
}
MyClass::~MyClass()
{
SomeInternalClass *pTemp = (SomeInternalClass *) pSomeInternalClass;
delete pTemp;
pSomeInternalClass = NULL;
}
void指針背后的想法是我不必在公共頭文件中包含內部類的定義。
我的問題是:我是否以安全的方式處理空指針? 刪除有什么問題嗎?
謝謝!
只要你把它重新投入原始類型,它就是安全的。
但你不需要這樣做。 只需在公共標題中向前聲明你的內部類型,你就不需要做這個討厭的演員。
class YourClass {
...
private:
class Internal;
Internal *pInternal;
};
您不需要在公共標頭中包含該類的定義。 即
class SomeInternalClass ;
class MyClass
{
public:
MyClass();
protected:
virtual ~MyClass();
private:
SomeInternalClass *pSomeInternalClass;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.