ich über einige Code lief, die wie folgt aussah:Implizite Konvertierung von int zu einer Klasse Typ
class Cents
{
private:
int m_nCents;
public:
Cents(int nCents) : m_nCents(nCents)
{
}
};
int main(){
Cents c = 0; // why is this possible?
}
Warum ist es möglich, von int nach Typ der Klasse Cents zu konvertieren? Wird der Kopierkonstruktor in diesem Fall aufgerufen?
Sie haben es getaggt: ** implizite Konvertierung **. – meagar
Ich dachte, implizite Konvertierung wurde nur für grundlegende Typen (anscheinend nicht). Also wird 0 in den Typ Cents konvertiert und c wird mit dem Kopierkonstruktor initialisiert? Wenn ja, was passiert, wenn 0 in Cents konvertiert wird? –
Es gibt keinen "Kopierkonstruktor" in Ihrem Code, ich bin mir nicht sicher, woher Sie das bekommen. Es gibt nur einen regulären alten Konstruktor der Nicht-Kopie-Variante. Und da Ihr Konstruktor einen einzelnen Wert akzeptiert, wird er in die Liste der möglichen impliziten Konvertierungen von diesem Wert in Ihren Klassentyp aufgenommen. – meagar