gpt4 book ai didi

c++ - auto 和 const 对象

转载 作者:太空狗 更新时间:2023-10-29 20:16:39 26 4
gpt4 key购买 nike

#include <iostream>
#include <boost/shared_ptr.hpp>

using namespace std;

class A
{

public:
const shared_ptr<const int> getField () const
{
return field_;
}

private:
shared_ptr<int> field_;
};

void f(const A& a)
{
auto v = a.getField(); //why auto doesn't a const shared_ptr<const int> here ?
v.reset(); //OK: no compile error
}

int main()
{
A a;
f(a);
std::cin.ignore();
}

在上面的代码中,为什么编译器会推导出v的类型为 shared_ptr<int>而不是 const shared_ptr<const int> getField 返回的类型?

编辑:MSVC2010

最佳答案

auto 忽略引用和顶级 const。如果你想让他们回来,你必须这样说:

const auto v = a.getField();

请注意,getField 返回 field_ 的拷贝。您确定不想引用 const 吗?

const shared_ptr<int>& getField () const;

auto& v = a.getField();

关于c++ - auto 和 const 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953780/

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