Itt létrejön dinamikusan egy új objektum? És ezeket az objektumokat hogyan töröljem?
//main.cpp
# include <iostream>
typedef unsigned short ushort;
typedef unsigned int uint;
using namespace std;
class Mammal {
public:
Mammal() { cout <<"Mammal Konstruktor \n"; }
Mammal(const Mammal &rhs);
virtual ~Mammal() { cout <<"Mammal virtual Destruktor \n"; }
virtual Mammal* Copy()const { return new Mammal(*this); } //Itt.
void SetAge(short age) { itsAge = age; }
short GetAge()const { return itsAge; }
protected:
short itsAge;
private: };
class Dog: public Mammal {
public:
Dog(): Mammal() { cout <<"Dog Konstruktor \n"; }
Dog(const Dog &rhs);
virtual ~Dog() { cout <<"Dog virtual Destruktor \n"; }
virtual Mammal* Copy()const { return new Dog(*this); } //És itt.
protected:
private: };
Mammal::Mammal(const Mammal &rhs): itsAge(rhs.GetAge()) {
cout <<"Mammal copy Konstruktor \n"; }
Dog::Dog(const Dog &rhs): Mammal(rhs) {
cout <<"Dog copy Konstruktor \n"; }
int main() {
const Mammal *const pMammal = new Dog;
Mammal *pArray[1] = {pMammal->Copy()};
delete pArray; //És ez miért warningol?.
delete pMammal;
return 0; }
Így már jó delete *pArray;
és nem varningol.
delete *pArray;
pArray[0] = NULL;
delete pMammal;
delete *pArray;
pArray[0] = NULL;
ilyesmikből lesz a segfault :)
Nem unod még az emlőseidet? Másik megjegyzés, hogy felesleges berakni +1000 sor olyan kódot, aminek nincs köze a kérdéshez, mert a kutya se fogja elolvasni emiatt a kérdést, mint ahogy én sem :)
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!