std::string
访问者(back
,front
,at
和operator[]
)包含const
和非const
重载,如下所示:
char& x();
const char& x() const;
为什么第二个版本会返回 const
引用,而不是简单地按值返回char
(作为副本)?
根据rules of thumb on how to pass objects around,当没有必要修改原始文件时,不应该通过值传递小对象吗?
答案 0 :(得分:10)
因为调用者可能需要对char的引用,这反映了通过非const途径对其进行的任何更改。
DynamoDB (using PHP)
答案 1 :(得分:1)
因为上下文。
您正在处理一个容器和函数,其名称暗示了特定的位置数据。
std::string s = "hello world?";
const auto& s1 = s.back();
s.back() = '!';
这里返回引用提供了灵活性,它也与非const变量和其他stl容器一致。所有这些功能实际上都是std::basic_string<char>
的成员。
请记住,“经验法则”是指导原则而不是规则。