const与非const同时将参数传递给涉及转换的函数

时间:2018-03-10 13:07:59

标签: c++ arguments implicit-conversion

我正在阅读 Bjarne Stroustrup 所着的 The C ++ Programming Language 一书的第7章。在本章开头他写道:

  

参数传递的语义与初始化的语义相同。检查参数类型,并在必要时进行隐式参数类型转换。

在下一节中,他写了

  

请注意,参数传递的语义与赋值的语义不同。这对于const参数,引用参数和用户定义类型的参数很重要。

赋值和初始化的语义不一样吗?绝不能因为它使两个陈述相互矛盾。请告诉我他们的语义之间的区别。

编辑:我完全错过了赋值不适用于常量的点,初始化和赋值的语义在 references 中有所不同。感谢nwp将其指出。

他跟随:

  

需要转换的文字,常量和参数可以作为const& amp;参数,但不是非const参数。

我多次使用非const参数,转换适用于我(对于非参考参数)。我假设他在谈论通过引用传递的参数。我的假设是否正确?

EDIT-2:后来他写了

  

禁止非const引用参数的转换(第5.5节)避免了临时引入引起的愚蠢错误的可能性。

这使我的假设正确。谢谢大家的帮助。

0 个答案:

没有答案