unique_ptr和普通指针不匹配

unique_ptr and normal pointer doesnt match

本文关键字:指针 不匹配 ptr unique      更新时间:2023-10-16
int a = 1;
int* w = &a;
std::unique_ptr<int> v(new int(a));
cout << "*w: " << *w << endl;// this works
cout << "*v: " << *v << endl;// this works
cout << "w: " << w << endl; // this works
cout << "v: " << v << endl; // this doesnt work
cout << "v: " << v.get() << endl; // this works

我认为独特的指针结构就像普通的一样。但是当我尝试通过原始定义的名称获取此指针的地址时,它会unique_pointer显示错误"没有运算符与此运算符匹配"。它只能通过 v.get() 方法工作

我错过了什么?

问题是没有重载的operator<<函数接受std::unique_ptr对象。

打印指针通常是无用的,除非在极少数情况下(主要是调试目的),因此实际上不需要智能指针的通用operator<<重载。

如果你养成了打印智能指针的习惯(虽然我不明白为什么),你可以很容易地添加自己的重载。