在我看來,一個類應該提供一個明確定義的抽象,並且不應該在沒有類的知識的情況下修改私有成員。但是當我檢查「auto_ptr」(或任何其他智能指針)時,違反了此規則。請參見下面的代碼auto_ptr design
class Foo{
public:
Foo(){}
};
int main(int argc, char* argv[])
{
std::auto_ptr<Foo> fooPtr(new Foo);
delete fooPtr.operator ->();
return 0;
}
操作過載( - >)給出下面的指針,它可以不使用「的auto_ptr」的知識進行修改。我不能認爲這是一個糟糕的設計,因爲智能指針是由C++極客設計的,但我想知道他們爲什麼允許這樣做。有沒有辦法寫出沒有這個問題的智能指針。
欣賞你的想法。
我想不出許多有用的類沒有這樣的事情。它很方便,但不要愚蠢。 `delete []&vector [0];` – 2012-03-21 22:15:01