Value category is not lifetime
C++值类别与生命周期完全没有关系
Here’s another slogan that needs more currency:
Value category is not lifetime.
What I mean by this mantra is probably best shown by example.
Two examples of a common C++ problem
Suppose we design a String class that looks like this:
class String {
std::string s_;
public:
explicit String(const char *s) : s_(s) {}
operator std::string_view() const { return s_; }
};
And suppose we design a TokenIterator class that looks like this:
class TokenIterator {
const char *s_;
public:
explicit TokenIterator(const std::string& s) : s_(s.data()) {}
auto& operator++() {
// complicated logic to advance `s_` through the string
}
};
本文通过两个示例探讨了C++中值类别与生命周期的区别,介绍了String类与TokenIterator类的设计,并强调值类别并不是指生命周期。
549

被折叠的 条评论
为什么被折叠?



