您好我是C ++ 11概念的新手。我已经声明了两个带有差异范围的共享指针。我将本地范围分配给更高一级的范围shared_ptr。我试图打印相同的。它没有造成任何问题。当然我同意我们的普通指针也具有相同的属性。但这可能最终会悬挂指针。在这里我只想知道sPtr2是指向无效指针还是其正确。
#include <iostream>
#include <memory>
using namespace std;
struct MyStruct_t
{
int a;
int b;
};
int main() {
shared_ptr<MyStruct_t> sPtr2;
if(1)
{
shared_ptr<MyStruct_t> sPtr1 (new MyStruct_t);
sPtr1->a = 5;
sPtr1->b = 10;
sPtr2 = sPtr1;
cout<<"sPtr1->a : "<<sPtr1->a<<" b value : "<<sPtr1->b<<endl;
cout<<"sPtr1 address is : "<<sPtr1<<endl;
}
cout<<"sPtr2->a : "<<sPtr2->a<<" b value : "<<sPtr2->b<<endl;
cout<<"sPtr2 Address is : "<<sPtr2<<endl;
return 0;
}