왜 이것이 실패하는지 이해할 수 없습니까?cout에 unique_ptr을 인쇄하십시오.
int *p = new int(10);
std::unique_ptr<int> ptr(p);
// Below line gives compilation error.
std::cout << "Value of ptr " << ptr << std::endl;
// Below line works well.
std::cout << "Value pointed ptr " << *ptr << std::endl;
std::cout << "Value of ptr->get() " << ptr.get() << std::endl;
내가 그것을 이런 식으로 이해 :
이 페이지의 주소가 100, 새로운 할당 된 메모리의 주소가 위의 묘사에서 200
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
이다 말을, unique_ptr은 새로 할당 된 메모리를 가리키는입니다 그 자체로 '피'를 피합니다. 그래서, 'ptr'인쇄는 200을주지 않아야합니까?
오오. 이해해. C++ 커뮤니티가 <<을 (를) 오버로드하는 것을 막고있는 것을 구입하십시오? –
@HemantBhargava :별로 필요 없습니다. C++ 표준은 이미 너무 커서 (*), 거의 아무도 사용하지 않을 물건을 추가하면 더 커집니다. * : 아니요, 제거 할 항목에 대한 좋은 제안이 없습니다. –
@MartinBonner thinning 제안에 대해서는'std :: vector'이 떠오른다. –
Angew