Dlaczego konstruktor kopiowania jest wywoływany zamiast konstruktora konwersji?
Więc zasadniczo ten kod:
class A {
};
class B {
B (const B& b) {}
public:
B (){}
B (const A& a) {}
};
int main()
{
A a;
B b1(a); //OK
B b2 = a; //Error
}
generuje tylko błąd dlaB b2 = a
. A ten błąd jest
błąd: „B :: B (const B &)” jest prywatny
Dlaczego próbuje wywołać konstruktor kopii oprócz konstruktora konwersji bezpośredniej?
Z komunikatu o błędzie wynika, że jest tymczasowyB
jest tworzony, a następnie używany do tworzenia kopii, ale dlaczego? Gdzie to jest w standardzie?