我正在阅读 Bjarne Stroustrup 所着的 The C ++ Programming Language 一书的第7章。在本章开头他写道:
参数传递的语义与初始化的语义相同。检查参数类型,并在必要时进行隐式参数类型转换。
在下一节中,他写了
请注意,参数传递的语义与赋值的语义不同。这对于const参数,引用参数和用户定义类型的参数很重要。
赋值和初始化的语义不一样吗?绝不能因为它使两个陈述相互矛盾。请告诉我他们的语义之间的区别。
编辑:我完全错过了赋值不适用于常量的点,初始化和赋值的语义在 references 中有所不同。感谢nwp将其指出。
他跟随:
需要转换的文字,常量和参数可以作为const& amp;参数,但不是非const参数。
我多次使用非const参数,转换适用于我(对于非参考参数)。我假设他在谈论通过引用传递的参数。我的假设是否正确?
EDIT-2:后来他写了
禁止非const引用参数的转换(第5.5节)避免了临时引入引起的愚蠢错误的可能性。
这使我的假设正确。谢谢大家的帮助。