gpt4 book ai didi

c++ - boost::scoped_ptr 指针的值到底是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 14:54:09 24 4
gpt4 key购买 nike

我正在尝试理解 boost::scoped_ptr 的语法.让我们定义并写入标准输出 a 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()
}

问题。为什么是*p.get()==*p然而std::cout << p << '\n';不会编译?

我在工作 on g++ -std=c++11 -O2 -Wall -pedantic .

最佳答案

Why do &p and p.get() produce different results?

&pscoped_ptr 的地址目的。 p.get()int 的地址它指向的对象。

Why is *p.get()==*p and yet std::cout << p << '\n'; won't compile?

两者无关。

*p定义为与 *p.get() 相同: 取消引用作用域指针访问它指向的对象,取消引用指向同一对象的原始指针也是如此。

cout << p不编译,因为没有重载 <<用于流式作用域指针。

I'm working on g++ -std=c++11 -O2 -Wall -pedantic

然后考虑std::unique_ptr (在 C++11 中引入)而不是 boost::scoped_ptr .它更标准,也可移动。

关于c++ - boost::scoped_ptr 指针的值到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com