Sto cercando di capire le idee di puntatori e riferimenti in C ++. Sono bloccato con quanto segue, quale sarebbe il comportamento specifico in questo caso? Ho una classe come questa:
class MyClass{
public:
MyClass(const QByteArray & raw){
this->m_rawData =raw;
}
private:
QByteArray m_rawData;
}
Diciamo che creo l'istanza in questo modo:
bool otherClass::someOtherMethod(){
QByteArray data = QString("sometext").toUtf8();
MyClass instance = new MyClass(data);
return true;
}
Trasmetto l'indirizzo della variabile data
al costruttore della mia classe, quindi esco dal metodo locale di OtherClass
. Il QByteArray data
verrà distrutto e la sua memoria liberata, giusto? Ma cosa succederà in MyClass instance
? Questo sarà
MyClass(const QByteArray & raw){
this->m_rawData =raw;
}
copia effettivamente il contenuto di raw
in m_rawData
o copierà il riferimento effettivo del grezzo e m_rawData
diventerà non valido quando restituisce otherClass::someOtherMethod
?