回答
您需要定義一個析構函數delete pi;
。此外,你還需要定義,否則當A
一個實例被複制兩個對象將指向同一int
拷貝構造函數和賦值運算符,當A
實例之一是破壞留下的A
其他實例將被刪除與一個搖晃的指針。
例如:
class A
{
public:
// Constructor.
A(int a_value) : pi(new int(a_value)) {}
// Destructor.
~A() { delete pi; }
// Copy constructor.
A(const A& a_in): pi(new int(*a_in.pi)) {}
// Assignment operator.
A& operator=(const A& a_in)
{
if (this != &a_in)
{
*pi = *a_in.pi;
}
return *this;
}
private:
int* pi;
};
哎呀。 : - )----- :-( – 2012-02-29 15:38:02
你應該實施一個析構函數~A()
,它負責清理A
的東西。隨後,在類型A
將清理一切的指針調用delete
。
但是,永遠記住,如果你需要一個析構函數,你幾乎肯定需要一個拷貝構造函數和拷貝賦值運算符太,每[三規則(http://stackoverflow.com/questions/4172722) – 2012-02-29 11:45:13
你需要寫一個析構函數刪除所有指針類型的成員。例如:
class A
{
int *pi;
public:
~A(){delete pi;}
};
您將需要確保您的構造函數爲pi分配一個值(至少爲NULL)。並且像@hmjd的答案一樣,您將需要實現或隱藏複製構造函數和賦值運算符。看三個這裏的規則: http://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29
- 1. 刪除指針的指針
- 2. 如何刪除指針指針?
- 3. 指向成員的指針
- 4. 指向類成員的指針
- 5. 指向類內成員的指針
- 6. C++指向成員的指針(指向成員的基類)
- 7. 如何刪除由指針數組組成的成員變量
- 8. C++派生類的劇組成員指針到基類指針
- 9. 成員指針基類
- 10. 圓形類成員指針?
- 11. 類成員函數指針
- 12. 刪除指針
- 13. C++類指針刪除segfaulting
- 14. 刪除載體類指針
- 15. 設置結構的指針成員,從指針指向結構的指針
- 16. C++刪除一個指針指針
- 17. 如何從解析中的指針數組中刪除指針?
- 18. 如何定義指向類成員函數的指針
- 19. 如何創建一個指向數組類成員的指針?
- 20. C++中的類成員函數指針
- 21. 使用類的成員函數指針
- 22. 指針類的數據成員
- 23. 刪除TCHAR指針
- 24. c + +刪除指針
- 25. 刪除空指針
- 26. 如何刪除指針只有一次?
- 27. 刪除指針是一個公共類成員
- 28. C++指向成員的指針
- 29. CURLOPT_WRITEFUNCTION指向成員函數的指針
- 30. C++指向成員的指針
這將是,如果你編寫代碼的時候是。它不會是如果你編碼它不是。決定你想要的和編碼的。 – 2012-02-29 11:43:12
避免使用標準庫容器或智能指針作爲成員。 – stefaanv 2012-02-29 11:59:47
不可以。但請注意,它會調用析構函數,您可以在其中清理A實例。如果你想在那裏刪除pi,那麼你可以做到這一點。 **但是**你必須確保你正確地擁有指針。循環[rule of three](http://stackoverflow.com/questions/4172722)。 – 2012-02-29 15:36:09