class A{
public:
A(int i){}
};
class B{
public:
B(A){}
};
void test(B){};
int main() {
A a=1;
B b1=a;
test(1);
}
我有两个类,其中第一类具有转换int Ctor,这意味着我可以通过“分配”一个整数(第一行)来构造它。
第二个类具有参数类型为A的转换Ctor。可以用(第二行)构造b1。
是否有可能在链中使用多个转换ctor,从而可以编译第三行?
答案 0 :(得分:1)
您可以显式从B
构造int
,但不能隐式:
test(B{1}); // ok
test(1); // Not ok
话虽这么说,但这种中途措施也有效:
test({1}); // ok
以上所有内容仅适用于一个隐式生成的中产阶级(A
)。这样的链条无法进一步扩展。