Perché è necessario restituire un costruttore nel sovraccarico dell'operatore?Perché è necessario restituire un costruttore nell'overloading dell'operatore?
Ecco un esempio:
Complex Complex::operator*(const Complex &operand2) const
{
double Real = (real * operand2.real)-(imaginary * operand2.imaginary);
double Imaginary = (real * operand2.imaginary)+(imaginary * operand2.real);
return Complex (Real, Imaginary);
}
Sembra di tornare un costruttore per l'oggetto e non l'oggetto stesso? Cosa sta tornando lì?
Questo sembra rendere più senso:
Complex Complex::operator*(const Complex &operand2) const
{
double Real = (real * operand2.real)-(imaginary * operand2.imaginary);
double Imaginary = (real * operand2.imaginary)+(imaginary * operand2.real);
Complex somenumber (Real, Imaginary);
return somenumber;
}
'Complex (...)' è la costruzione di un'istanza * * di 'Complex'. Il costruttore viene utilizzato per inizializzare un oggetto di quel tipo, in questo caso, un temporaneo. – 0x499602D2
"ritorno di un costruttore" ??? Cosa diavolo ti ha fatto concludere che sta "restituendo un costruttore"? Nei costruttori di linguaggio C++ hanno nomi come 'Complesso :: Complesso'. Nota: due parti identiche separate da '::'. Quello sarebbe un nome costruttore. Ora, dove vedi qualcosa che potrebbe sembrare un costruttore nel codice che hai postato? – AnT
Perché non 'return {Real, Imaginary};'? –