konstruktor konwertujący

0
struct X{
X(int);
}
X a ;
a = 2; // Wg książki ten zapis zosatnie zinterpretowany przez kompilator jako a = X(2);

Jak widać powyżej, jako że konstrukto nie jest explicite jest on konstruktorem konwertującym. Pytanie tylko w kwestii przeciążania operatora =. Wg mnie powinien być tu wywołany właśnie odpowiedni przeciążony operator=. W mojej strukturze nie jest, ale co jeśliby był?

1

Wywołają się oba. Najpierw taki który z 2 zrobi obiekt a potem operator przypisania. Bo zauważ ze argumentem operatora = będzie obiekt danej klasy zapewne więc najpierw tak czy siak trzeba konwertować ta liczbę do obiektu.

0

1) ok, a jeżeli napisałbym, a co jeżeli napisałbym operator dla obiektu X biorący jako argument int? Czyli dopasowałbym wprost?
2) co jeżeli taka sytuacja jak powyżej, ale konstruktro jest explicite?

1

Czekałeś 25 min na odpowiedź którą mogłeś sprawdzić w minutę?
No chyba że nie umiesz napisać tego operator = ale wtedy odpowiedzi na te pytania do niczego ci się nie przydadzą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0