C++-ban a destruktorban mit kell felszabadítani és hogyan?
Tudom hogy mire való és a tanár ezzel el is intézte, jobban nem ment bele.
Ha pl adott egy osztály aminek van pl:
- 1 db int valtozoja
- 1 db string
- 1 db vector
- 1 db custom osztály.
Ilyenkor mit és hogyan kellene? Csak akkor kell valamit csinálni ha azokra pointerrel hivatkozok?
Köszönöm a válaszokat!
Itt van egy példa.
class Object
{
private:
int length;
std::string name;
std::vector<int> list;
int arr[10];
char * str;
double * number;
double * values;
char * names[10];
public:
Object() : length(0), name(), list() {
// Azt a memoriat, amit te foglalsz le a new operatorral,
// azt majd neked kell felszabaditani.
int i;
str = new char[260]; // majd fel kell szabaditani
str[0] = '\0';
number = new double; // majd fel kell szabaditani
values = new double[10]; // majd fel kell szabaditani
for (i = 0; i < 10; i++) {
arr[i] = 0;
values[i] = 0.0;
names[i] = new char[100]; // majd fel kell szabaditani
names[i][0] = '\0';
}
}
~Object() {
int i;
delete [] str; // fel kell felszabaditani
delete number; // fel kell felszabaditani
delete [] values; // fel kell felszabaditani
for (i = 10; i >= 0; i--) {
delete [] names[i]; // fel kell felszabaditani
}
// length - nem kell felszabaditani
// name - nem kell felszabaditani
// list - nem kell felszabaditani
// arr - nem kell felszabaditani
}
};
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!