在
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说什么(上下文很重要),但无论如何,类型是一样的.