c++ - 为什么函数中的对象输入不匹配但仍然有效?

标签 c++ function class object

#include <iostream>

class A
{
public:
    A(int n = 0) : m_n(n)
    {
        std::cout << 'd';
    }
    A(const A& a) : m_n(a.m_n)
    {
        std::cout << 'c';
    }
private:
    int m_n;
};

void f(const A& a1, const A& a2 = A())
{}

int main()
{
    f(3);
}

谁能帮忙解释一下

void f(const A &a1, const A &a2 = A())
{}

尤其是 const A &a2 = A()

为什么 f(3)?为什么整数输入仍然有效?应该是对象

最佳答案

因为在传递参数时,它被隐式转换为 A。如果您在整数 ctor 参数列表后键入 explicit,它将不再执行此操作。

关于c++ - 为什么函数中的对象输入不匹配但仍然有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595881/

相关文章:

c++ - 如何使用外部链接在 namespace 范围内定义常量 double?

c++ - "void *(*)(void *)"在 C++ 中是什么意思?

function - 如何更改sqlite get函数?

python - 我可以(/是否有意义)创建一个 pandas 数据框来保存自定义类实例?

ruby - 使用不同名称的方法扩展 Ruby 父类的方法

c++ - C++中通过his指针指示一个对象的方法

c++ - 带 -O2 和不带 -O2 的移位运算符的不同行为

mysql - 有没有办法在 MySQL 数据库之间复制函数?

sql - Oracle:从日期时间中减去毫秒

使用方法调用时,Javascript 类属性返回未定义