在我看来,一个类应该提供一个明确定义的抽象,并且不应该在没有类的知识的情况下修改私有成员。但是当我检查“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