class A
{
public:
int iValue;
A(){Print("++");}
~A(){Print("--");}
};
//......................
A m_A[2];
void OnStart()
{
A a;
m_A[0] =a;
m_A[1] = new A();
}
Esegui e vedi quante volte e quando vengono chiamati il costruttore e il distruttore.
m_A[0]=a; in questo caso è uguale a: m_A[0].iValue=a.iValue;
new A(), in questo caso, crea un nuovo oggetto, chiamiamolo temp e succede quanto segue: m_A[1].iValue=temp.iValue;
che sono equivalenti
che sono equivalenti.
Lasciate perdere del tutto questa attribuzione.
Dimentica del tutto questo incarico.
Quindi non sono io che dovrei dimenticare, è il compilatore che non dovrebbe permetterti di scriverlo in quel modo.
E al momento non solo compila ma funziona senza errori!
Quindi non sono io che devo dimenticare, è il compilatore che non dovrebbe permettere che sia scritto in quel modo.
E al momento non solo compila ma funziona senza errori!
Il compilatore lo permette perché si può, se si sa cosa si sta facendo.
class A { public: int iValue; A(){Print("++");} ~A(){Print("--");} }; //...................... A m_A[2]; void OnStart() { A a; m_A[0] =a; m_A[1] = new A(); }Esegui e vedi quante volte e quando vengono chiamati il costruttore e il distruttore.
m_A[0]=a; in questo caso è uguale a: m_A[0].iValue=a.iValue;
new A(), in questo caso, crea un nuovo oggetto, chiamiamolo temp e succede quanto segue: m_A[1].iValue=temp.iValue;
Esegui e vedi quante volte e quando vengono chiamati il costruttore e il distruttore.
m_A[0]=a; in questo caso è uguale a: m_A[0].iValue=a.iValue;
La seconda linea in questo esempio non è corretta
Non si può salvare un puntatore in un oggetto. Il compilatore semplicemente non lo nota.
La seconda linea in questo esempio non è corretta
Non si può salvare un puntatore in un oggetto. E il compilatore non lo nota.
Esegui e vedi quante volte e quando vengono chiamati il costruttore e il distruttore.
m_A[0]=a; in questo caso è uguale a: m_A[0].iValue=a.iValue;
new A(), in questo caso, crea un nuovo oggetto, chiamiamolo temp e succede quanto segue: m_A[1].iValue=temp.iValue;
Questo deve essere il costruttore 3, il distruttore 2. Il resto è corretto.
e succede quanto segue: m_A[1].iValue=temp.iValue;
Questa è la quarta interpretazione!))
Allora perché è necessario chiamare la cancellazione nell'output? Per un oggetto temporaneo?
Questa è la quarta interpretazione!))
Allora perché l'output deve chiamare la cancellazione? Per un oggetto temporaneo?