無法理解這是爲什麼失敗?將unique_ptr打印到cout
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;
我的理解是這樣的:
說P的地址是100,新分配的內存地址是200
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
在上面的描述,是的unique_ptr指向新分配的內存本身,避免'p'。那麼,不應該打印'ptr'給我200?
Oho。合理。購買什麼阻止C++社區超載<<? –
@HemantBhargava:不是很需要。 C++標準已經太大了(*),增加了幾乎沒有人會使用的東西會使其變大。 *:不,我對於要刪除的內容沒有很好的建議。 –
@MartinBonner至於細化建議,會想到'std :: vector'。 –
Angew