Je ne suis pas familier avec le C++, mais je pense que j'ai raison de dire que les objets déclarés sur la pile devraient être automatiquement détruits/détruits lorsqu'ils sortent de la portée. Dans le mini-projet sur lequel je travaille en ce moment, ce n'est pas le cas.La variable affectée à la pile C++ n'est pas détruite (/ détruit?)
void MainWindow::clickTest() {
FunkyNumber num = 4;
FunkyNumber num2 = 6;
num += num2;
std::cout << num << std::endl; // This works okay!
// Should be destroyed here!
}
Mon destructor devrait faire ceci:
virtual FunkyNumber::~FunkyNumber() {
std::cout << "goodbye cruel world! (" << m_intValue << ")" << std::endl;
// m_intValue is just the int value of this "FunkyNumber"
}
Mais rien ne sort en sortie standard!
devrait mentionner probablement que je utilise Qt - mais ceci est juste une classe C++ simple et donc cela ne devrait pas vraiment de ce que je peux dire ...
EDIT: funkynumber.cpp:
#include "funkynumber.h"
FunkyNumber::FunkyNumber(int num)
: m_intValue(num) {
std::cout << "made a funkynumber " << num << std::endl;
}
FunkyNumber::~FunkyNumber() {
std::cout << "goodbye cruel world! (" << m_intValue << ")" << std::endl;
}
int FunkyNumber::intValue() const {
return m_intValue;
}
void FunkyNumber::operator+=(const FunkyNumber &other) {
m_intValue += other.intValue();
}
void FunkyNumber::operator=(const FunkyNumber &other) {
m_intValue = other.intValue();
}
bool FunkyNumber::operator==(const FunkyNumber &other) {
return other.intValue() == m_intValue;
}
std::ostream &operator<<(std::ostream &outStream, const FunkyNumber &num) {
outStream << "FunkyNumber (" << num.intValue() << ")";
return outStream;
}
Les objets sont détruits, vous ne les voyez pas pour une raison quelconque. – juanchopanza
pouvez-vous ajouter la classe entière FunkyNumber au poste s'il vous plaît? – RonenKr
Devrait voir plus de code - pourrait être quelque chose d'aussi simple que votre implémentation de destructeur n'est pas utilisée et le destructeur (vide) par défaut est appelé à la place. –