And*_*alo 0 c++ boost smart-pointers
我试图理解的语法boost::scoped_ptr.让我们定义并向标准输出写入scoped_ptr指针及其指向的值:
#include <boost/scoped_ptr.hpp>
#include <iostream>
int main()
{
boost::scoped_ptr<int> p{new int{1}};
std::cout << p.get() << '\n'; // ok
std::cout << p << '\n'; // error
std::cout << *p.get() << '\n'; // ok
std::cout << *p << '\n'; // ok. *p==*p.get()
}
Run Code Online (Sandbox Code Playgroud)
题.为什么现在*p.get()==*p却std::cout << p << '\n';不会编译?
我的工作on g++ -std=c++11 -O2 -Wall -pedantic.
为什么
&p而p.get()产生不同的结果?
&p是scoped_ptr对象的地址.p.get()是int它指向的对象的地址.
为什么现在
*p.get()==*p却std::cout << p << '\n';不会编译?
这两者是无关的.
*p定义与以下内容相同*p.get():取消引用作用域指针访问它指向的对象,并且取消引用指向同一对象的原始指针.
cout << p不编译,因为<<流式范围指针没有重载.
我正在尝试
g++ -std=c++11 -O2 -Wall -pedantic
然后考虑std::unique_ptr(在C++ 11中引入)而不是boost::scoped_ptr.它更标准,也可移动.