共被编辑 2 次

版本 更新时间 贡献者 编辑原因 操作
#r2 2月17日 尘枫啸10 更新问题 查看

C++中关于类型转换的问题

C++ Primer上说,

struct B;
struct A{
         A()=default;
         A(const B&);
};
struct B{
         operator A() const;
}
A f(const A&);
B b;
A a=f(b);//二义性错误
A a1=f(b.operator A());//正确
A a2=f(A(b));//正确

我们无法使用强制类型转换来解决二义性问题,因为强制类型转换本身也面临二义性,这句话到底是什么意思啊?这不是通过强制类型转换实现了功能吗?

#r1 2月17日 尘枫啸10 创建问题 查看

C++中关于类型转换的问题

C++ Primer上说,
struct B;
struct A{

     A()=default;
     A(const B&);

};
struct B{

     operator A() const;

}
A f(const A&);
B b;
A a=f(b);//二义性错误
A a1=f(b.operator A());
A a2=f(A(b));
我们无法使用强制类型转换来解决二义性问题,因为强制类型转换本身也面临二义性,这句话到底是什么意思啊?这不是通过强制类型转换实现了功能吗?

SegmentFault

一起探索更多未知

下载 App