c++ - const std::shared_ptr&const正确性

标签 c++

假设我有一个类

class K
{
public:

    int k = 0;

    void Change()
    {
        k++;
    }

    void None() const
    {
        std::cout << "None \n";
    }


};

像这样为什么在const引用上使用non const方法完全可以呢?
void FN(const std::shared_ptr<K>& k)
{
    k->Change();
}

最佳答案

指针是常量而不是对象。您不能更改指针指向的对象,但是可以更改对象。

如果您想要一个常量对象,则需要:

void FN(const std::shared_ptr<const K>& k)
{
    k->Change();
}

另请参阅:https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/,以了解为什么您根本不想使用const shared_ptr参数。

关于c++ - const std::shared_ptr&const正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680311/

相关文章:

c++ - Shell_NotifyIcon 在系统托盘中创建空白、无响应的图标

c++ - 如何在派生类中可移植地初始化继承的模板化 POD 结构?

c++ - const char* 和字符串比较在 C++ 中如何工作?

c# - 我可以在没有 Visual Studio 的情况下编译 DLL 吗?

我的列表类的 C++ 段错误,但似乎一切都在检查中

c++ - 模板化 << friend 在与其他模板化 union 类型相互关联时不工作

java - 如何从 C++ 调用 Java 函数?

c++ - C++中成对的指针

c++ - Wine user32 消息发送

c++ - 全局 std::string 和一个定义规则