几年前我读到,在C++中使用{}和{0}来初始化POD类型可能会引入代码的不良影响。
D3D11_TEXTURE2D_DESC dsd = {};
D3D11_TEXTURE2D_DESC dsd2 = { 0 }:
虽然我知道 {0} 明显是从 c 继承而来的,而 {} 是在 c++11 中引入的,但两者在编译时都被翻译成同一个 memset() 调用:
memset(&dsd, 0, sizeof(dsd));
然而,两种大括号初始化风格中的一种在内存初始化方面存在不对齐的问题。有人能告诉我哪种风格更好,以及为什么吗?
{}
的方式至少自 C++03 以来就存在了。 - juanchopanza