簡體   English   中英

構造函數或轉換稱為?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM