konstruktor konwertujący

Odpowiedz Nowy wątek
2014-07-07 00:43
mir
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ł?

edytowany 1x, ostatnio: mir, 2014-07-07 00:43

Pozostało 580 znaków

2014-07-07 00:52

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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2014-07-07 01:08
mir
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?

Pozostało 580 znaków

2014-07-07 01:15
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ą.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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