Je Couchait avec C++ et références const et suis confus pourquoi ce code fonctionne:Pourquoi cela fonctionne-t-il? De retour références const en C++
#include <iostream>
class A {
public:
A() : a_(50) {}
const int& getA() const { return a_; }
private:
const int a_;
};
int main(int argc, char* argv[])
{
A* a = new A();
const int& var = a->getA();
std::cout << var << std::endl;
delete a;
std::cout << var << std::endl;
}
Résultat:
50
50
Voici mes pensées:
var stocke une référence à a_.
lorsqu'un a est supprimé, a_ doit également être supprimé.
Lorsque var est à nouveau accédé, il ne contient plus de référence valide et une erreur de segmentation doit se produire.
Pourquoi cela fonctionne-t-il? Je ne crois pas que je fasse une copie temporaire.
C'était ma meilleure estimation - cela fonctionne dans ce cas, mais il a un comportement indéfini. Il n'est certainement pas garanti de travailler et est très dangereux. – devillighter
Pire - un de ces bogues qui se comportera différemment dans le débogage/la libération et sur les CPU simples/dual core –