der Operator-> Rückgabewert von intelligenten Zeigern [duplizieren]

Diese Frage hat hier bereits eine Antwort:

-> Verwendung in intelligenten Zeigern 2 Antworten

Intelligente Zeiger wie shared_ptr können wie gewöhnliche Zeiger mit verwendet werden* und-> Operator. Die Bücher sagen das-> Der Operator gibt den von shared_ptr gespeicherten Zeiger zurück. Sie können es also verwenden, um auf das Objekt zuzugreifen, auf das dieser Zeiger zeigt. Aber ich bin hier verwirrt. Schauen Sie sich den folgenden Code an.

class A
{
public:
    A(int v = 20){val = v;}
    int val;
}
A* p1 = new A;
std::cout<<p1->val;  //This is common sense

boost::shared_ptr<A> p2(new A);
std::cout<<p2->val;  //This is right
//My question is that p2-> returns the pointers of the object, then maybe another 
//-> should be used?
//like (p2->)->val? 

Antworten auf die Frage(3)

Ihre Antwort auf die Frage