需要const引用的函数的整型输入

Integer input to a function that expects const reference

本文关键字:整型 输入 函数 需要 引用 const      更新时间:2023-10-16

我不知道以前是否问过类似的问题,但我不知道如何搜索它,如果你提供我一个链接,重复标签是欢迎的:)

所以我问:

#include <iostream>
class H
{
   public:
      H(int x = 0)
      {
         std::cout << "constructor";
      }
};
void func1(const H &a1)
{
}
int main()
{
    func1(15);
    return 0;
}

你能解释一下这是怎么回事吗?为什么它接受int值作为const引用,调用构造函数等?

谢谢。

H有一个隐式转换构造函数,允许从int类型构造它,如下所示:

H h = 42;

当您将15传递给func1时,通过调用H(15)创建一个临时的H对象。这个临时函数在函数中使用。在c++中,可以将临时对象绑定到const引用。

如果你想禁止这些隐式转换,让构造函数explicit:

explicit H(int x = 0) { ... }