我希望在这里初始化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'中的成员'test',这是非类型'B(A( *)())'*
为什么在这种情况下不调用构造函数?
答案 0 :(得分:1)
这是解析器认为变量声明是函数声明的许多情况之一,请尝试将其写为:
B b = A() ; // Now the compiler doesn't think that it's a function declaration