C 11型扣除与const char *

前端之家收集整理的这篇文章主要介绍了C 11型扣除与const char *前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
GotW 94年,Herb Sutter对“经典C”声明进行了区分
const char* s = "Hello";

和“现代”风格

auto s = "Hello";

他告诉我们,“汽车风格更正确”的类型有微妙的差异. [编辑补充:评论表明,这可能不是Sutter实际意义上的公平表示;见下面的讨论.

但…有什么区别?我的印象是,一个const char *是正确的方法来引用字符串文字.此外,当我问我的调试器(lldb)时,似乎认为这些类型实际上是一样的:

* thread #1: tid = 0x1756c2,0x0000000100000f8f test`main + 31 at test.cc:4,queue = 'com.apple.main-thread',stop reason = breakpoint 1.1
    frame #0: 0x0000000100000f8f test`main + 31 at test.cc:4
   1    int main(void) {
   2        const char* s = "Hello";
   3        auto t = "Hello";
-> 4        return 0;
   5    }
(lldb) fr v
(const char *) s = 0x0000000100000f91 "Hello"
(const char *) t = 0x0000000100000f91 "Hello"

萨特指的是微妙的区别?

解决方法

你不完全清楚Herb说什么(上下文很重要),但无论如何,类型是一样的.

猜你在找的C&C++相关文章