gpt4 book ai didi

c++ - 关于重载->运算符中const关键字具体位置的问题

转载 作者:行者123 更新时间:2023-11-28 01:29:18 26 4
gpt4 key购买 nike

考虑下面的类“智能指针”。它包含一个指向另一个类的指针,该类实现了虚拟复制构造函数 clone()

我想重载运算符->。我的源代码显示了两个实现,一个是 const 一个是非 const - 我很满意。据我所知,后者 const 意味着它不能更改基础字段变量,而前者的返回类型是 const。但是返回类型和运算符之间的关键字是什么意思呢? - 即中间那个。

class myClass
{
public:
myClass(const SomeClass& inner) {DataPtr = inner.clone();}
~MyClass() {delete DataPtr;}
SomeClass* operator->() {return DataPtr;}
const SomeClass* const operator->() const {return DataPtr;}
private:
SomeClass* DataPtr;
};

最佳答案

const SomeClass* const

在这种情况下,const 是返回类型的一部分。这可以是有效的 C 代码。一如既往,从右到左阅读:

  • const 指向 const SomeClass 实例的指针。

这意味着指针本身是const,不能通过它修改指针对象。请注意,最右边的 const 在您的示例中是无用的,因为您按值返回:它与返回 const int 相同。

关于c++ - 关于重载->运算符中const关键字具体位置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310262/

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