作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
遇到了THIS Herb Sutter“又”发表了一篇文章,我开始思考为什么 const 指针不应该同样适用。
下面是测试代码
const char* get()
{
std::string a("something");
return a.substr(1, a.size() - 3).c_str();
}
int main()
{
const char* str = get();
std::cout << str << std::endl;
return 0;
}
标准字符串的 substr
返回一个新的字符串对象。用 g++ -Wall
编译也没有给我任何错误。那么这个例子是否也显示了长时间的临时行为,或者我在这里很幸运?
最佳答案
规则规定:
“绑定(bind)到const 引用 的临时对象的生命周期延长到const 的生命周期。”
您的代码示例中没有使用引用,它与 GOTW 代码示例无关。您的代码只是给您未定义的行为。取决于你如何看待它,你可能认为自己幸运/不幸它起作用了。
重要提示:引用不是指针!!
关于c++ - "Most Important Const"再次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23929418/
我是一名优秀的程序员,十分优秀!