[英]Constructor or conversion is called?
例如
struct A
{
A(B const& b) {} // function 1
};
struct B
{
operator A() const { return A(); } // function 2
};
和
B b;
A a(b); // function 1 is called.
用函數2構造或轉換a
任何方法?
按照您編寫它的方式,重載分辨率選擇A
的ctor。 如果您寫的略有不同:
A a = b
轉換不明確會導致錯誤。 如果將A
的ctor更改為顯式的:
explicit A(const B&) {}
然后,它會選擇B
的轉換算子,而不是A
的構造函數與線A a = b
,並調用A
的與線構造函數A a(b)
如果您確實要強制使用B
的轉換運算符,則始終可以顯式調用它:
A a = b.operator A();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.