Невозможно понять, почему это не удается?Печать unique_ptr to 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;
Я понимаю это так:
Say адрес р равен 100, адрес новой выделенной памяти 200.
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
В изображении выше, unique_ptr это указывает на вновь выделенной памяти сам, избегая «р». Итак, не следует ли печатать «ptr», мне 200?
Oho. Имеют смысл. Купите, что остановило сообщество C++ для перегрузки < –
@HemantBhargava: Не нужно. Стандарт C++ уже слишком велик (*), добавляя материал, который почти никто не будет использовать, сделает его больше. *: Нет, у меня нет хорошего предложения о том, что удалить. –
@MartinBonner Что касается прореживания предложений, 'std :: vector' приходит на ум. –
Angew