2

ここで B のオブジェクトを初期化することを期待していましたが、代わりに関数宣言を取得しました。

#include <iostream>
using namespace std;

class A {};

class B { 
    public: 
        B(const A&) { 
        cout << "B: conversion constructor\n"; 
    } 
};

int main()
{
    B b( A() ); //function declaration: B b( A(*)() );
    b.test();
}

出力は次のとおりです。非クラス型 'B( A( *)() )'*である 'b' のメンバー 'test' の要求

この状況でコンストラクターが呼び出されないのはなぜですか?

4

1 に答える 1