提问人:M. Doe 提问时间:3/12/2020 最后编辑:DeduplicatorM. Doe 更新时间:3/12/2020 访问量:588
“type const & value”和“type const& value”之间有区别吗?
Is there a difference between 'type const &value' and 'type const& value'?
问:
这个话题基本上说明了一切。我正在遵循一个教程,上面写着 ,但 Visual Studio 不断自动将其更正为 .type const &value
type const& value
有区别吗?
有约定吗?
答:
2赞
Xirema
3/12/2020
#1
C++ 解析令牌的方式规定,这两个语句将被等效地对待,并且将生成的代码没有区别。
至于为什么 MSVC 不断自动更正另一个,我真的不认为它应该这样做,但我对它这样做的猜测是 MSVC 正在帮助您保持代码的一致性(这很重要!),并且它假设您希望代码的外观是这样的格式:.type const& name
这种格式更容易识别C++,而另一种方法更像C(尽管C没有引用;但它确实有指针,类似的声明也会更明显地是C),MSVC希望强制执行C++样式。type const &name
type const *name
但同样;它们之间没有功能差异。两者都有效,都会编译,并且都会有相同的行为。
评论
1赞
François Andrieux
3/12/2020
值得注意的是,所有自动格式规则(包括何时格式化和何时不格式化)都在 Tools->Options...->Text Editor->C/C++->Formatting 中配置。
1赞
Peter
3/12/2020
“可识别的C++”更准确地说是“根据某些人可识别的C++”。是的,一些大牌(如斯特鲁斯特鲁普)提倡它,但有不同的观点。如果使用相同的格式来声明多个变量,则此样式会中断,例如 where 是指针,不是指针,但格式表明两者都是指针。然后需要额外的规则,否则这些规则是不必要的,例如“不要编写多个变量的声明”,这使得事情变得更加丑陋(需要一个风格规则来处理另一个风格规则的缺陷是荒谬的)。type* a, b;
a
b
上一个:如何确保参数作为常量引用传递?
评论
const type& value
const type &value
type const & value