gpt4 book ai didi

c++ - 为什么 C++ 不允许在复制构造函数中将非 const 转换为 const?

转载 作者:太空狗 更新时间:2023-10-29 23:22:00 25 4
gpt4 key购买 nike

我有两个 getter 成员:

Node* prev() { return prev_; }
int value() { return value_ }

请注意缺少常量标识符(我忘了它们,但现在我想知道为什么这不起作用)。我正在尝试编译它:

Node(Node const& other) : prev_(other.prev()), value_(other.value()) { }

编译器拒绝这个。我以为C++允许函数参数中的non-const到const的转换,比如:

{
Foo(int bar);
}

Foo(const int bar)
{
//lala
}

为什么它不让我用复制构造函数做同样的事情? const 标识符意味着我保证不会更改任何内容,那么如果我从 const 或非 const 源获取值有什么关系呢?

最佳答案

您不是在尝试进行非常量到常量的转换。您正在尝试调用两个不是 const 和 const 引用的方法(调用 prev 和 value)。这种类型的操作是 const 语义严格禁止的。

您可以改为直接使用字段 prev_ 和 value_。因为它是同一类型的成员,所以您可以访问 const 对象上可用的私有(private)对象。

关于c++ - 为什么 C++ 不允许在复制构造函数中将非 const 转换为 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213418/

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