c++ - std::string 的 operator[] 和 const operator[] 的区别

标签 c++ operators

任何人都可以解释一下之间的区别:

const char& operator[] const

char& operator[]

在 C++ 中? 第二个是复制字符串是真的吗?为什么?

最佳答案

不,第二个返回对字符串中单个字符的非常量引用,因此您实际上可以使用它来更改字符串本身(字符串对象根本不重复,但其内容可能会被修改)。

std::string s = "Hell";
s[0] = 'B';

// s is "Bell" now

鉴于此示例,char& operator[]当然可以用于访问单个字符而不修改它,例如 std::cout<< s[0]; .

然而,const重载是必需的,因为您不能在 const 对象上调用非 const 成员函数。拿这个:

const std::string s = "Hell";
// ok, s is const, we cannot change it - but we still expect it to be accessible
std::cout << s[0];

// this, however, won't work, cannot modify a const char&
// s[0] = 'B';

通常,编译器会选择 const仅在对 const 对象调用时才重载,否则它将始终倾向于使用非 const 方法。

关于c++ - std::string 的 operator[] 和 const operator[] 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540699/

相关文章:

c - C 运算符/\和\/做了什么?

java - Java中的-->符号是什么?

Python:定义我自己的运算符?

python - "is"运算符对整数的行为异常

c++如何以不同的方式循环代码?(不是你想的那种)

c++ - 使用类添加复数

c++ - QHash存储大量数据

c++ - 使用 Triangle 库对凹多边形进行三角剖分

c++ - 创建一个 OS C++ 特定的 API

c++ - 如何在 c++ 的 quickfixc 中动态地就 SenderCompID 和 TargetCompID 达成一致?