通过引用从函数调用的C ++构造函数

莫里斯

我正在做一些C ++测试,但我不理解下面的代码:

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)
{
}

int main()
{
    //Call 'f' function and prints: d
    f(3);
    return 0;
}

我不明白的是为什么在这里调用构造函数并显示“ d”?

谢谢你。

迈克·西摩

您正在将int传递给想要引用值的函数A为了提供这样的说法,临时A使用转换构造函数创建A(int),打印'd'

函数返回后,临时表达式会在表达式语句的末尾销毁。

请注意,这仅在引用为const右值引用时才有效临时值不能绑定到非常量左值引用;因此,如果参数类型为A&,则应该得到一个错误。

它还要求转换可以隐式完成。您可以通过声明构造函数来防止这种转换explicit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: thread通过引用传递调用复制构造函数

来自分类Dev

未调用C ++构造函数

来自分类Dev

Java:通过构造函数调用构造函数,有什么意义?

来自分类Dev

构造函数是“调用”与构造函数是“执行”的吗?

来自分类Dev

C ++-构造函数调用构造函数

来自分类Dev

构造函数调用顺序

来自分类Dev

委托构造函数的调用

来自分类Dev

通过引用从函数调用的C ++构造函数

来自分类Dev

备用构造函数调用

来自分类Dev

函数调用通过引用传递?

来自分类Dev

结构构造函数调用this()

来自分类Dev

在构造函数中调用重载构造函数

来自分类Dev

C ++通过构造函数中的引用传递

来自分类Dev

复制或引用构造函数?

来自分类Dev

从构造函数调用全局函数

来自分类Dev

C ++:通过花括号调用构造函数?

来自分类Dev

C ++不同的构造函数调用

来自分类Dev

C ++构造函数调用

来自分类Dev

构造函数中的调用函数

来自分类Dev

std :: thread通过引用传递调用复制构造函数

来自分类Dev

C ++构造函数未调用

来自分类Dev

Java:通过构造函数调用构造函数,有什么意义?

来自分类Dev

构造函数被“调用”与构造函数被“执行”了吗?

来自分类Dev

C#构造函数引用

来自分类Dev

C ++调用线程构造函数

来自分类Dev

在构造函数内调用构造函数

来自分类Dev

调用父构造函数C ++

来自分类Dev

构造函数使用参数调用构造函数

来自分类Dev

如果通过引用对象代替函数中的变量,它是否调用复制构造函数?