gpt4 book ai didi

c++ - 为什么 std::basic_string::operator[] 是一个 const 方法,如果它也是一个非常量方法?

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

http://cplusplus.com/reference/string/basic_string/operator[]

我知道有第二个版本返回 const 以防止在需要 const 结果时发出警告并减轻强制转换是有利的,但如果函数已经提供了非const 方法(方法--不是结果) 那么声明const-result 方法const 的意义何在?

最佳答案

您需要了解,第二个 (const) 版本不仅返回不同的结果,而且还将自己标记为 const (这是声明末尾的第二个 const):

const_reference operator[] (size_type pos) const;

这是两件不同的事情:const 本身的返回值在非 const 方法的存在下是不需要的(因为非 const 返回值始终可以转换为 const 版本)。

但是没有 const 版本的运算符意味着您不能在 const 字符串对象上使用它。

const 结果只是运算符本身的 const 性的结果:如果你有一个 const 字符串并使用运算符要获得对单个字符的引用,显然该引用也必须是 const(如果不是,您可以更改 const 字符串中的单个字符)。

关于c++ - 为什么 std::basic_string::operator[] 是一个 const 方法,如果它也是一个非常量方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983475/

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