Avatar billede MLundager Nybegynder
16. august 2010 - 18:29 Der er 4 kommentarer og
1 løsning

C++ Classes Destructors

Hej jeg sidder og laver noget med classes og jeg kan ikke få destructors til at virke jeg følger en guide om classes og de har lavet den her kode

#include <iostream>

using namespace std;

class Point
{
public:
    Point(float f_x = 1.0, float f_y = 1.0, float f_z = 1.0);
    ~Point();

private:
    float x, y, z;

protected:

};

Point::Point(float f_x , float f_y , float f_z)
{
    cout << "We're in the constructor with arguments " << (int)this << endl;

    x = f_x;
    y = f_y;
    z = f_z;

}

Point::~Point()
{
    cout << "We're in the destructor... we're about to go to oblivion " << (int)this << endl;
}

void main()
{
    Point myLocation(23, 54, 65);
    Point dansLocation;

    system("Pause");
}

men når jeg compiler og kører programmet så viser den ikke
cout << "We're in the destructor... we're about to go to oblivion " << (int)this << endl;

betyder det at den ikke virker?
Avatar billede arne_v Ekspert
16. august 2010 - 19:05 #1
Proev med:


void f(*)
{
    Point myLocation(23, 54, 65);
    Point dansLocation;
}

void main()
{
  f();
  system("Pause");
}

det er nenmlig lidt usikkert om destructor naar at blive kaldt inden programmet afslutter.
Avatar billede arne_v Ekspert
16. august 2010 - 19:07 #2
Med en Mingw GCC 4.4.2 virker det som tiltaenkt:

We're in the constructor with arguments 2293556
We're in the constructor with arguments 2293544
Press any key to continue . . .
We're in the destructor... we're about to go to oblivion 2293544
We're in the destructor... we're about to go to oblivion 2293556

men derfor kan det godt virke anderledes med en anden compiler.
Avatar billede arne_v Ekspert
16. august 2010 - 19:08 #3
Og et par smaating:

int main()

ikke void.

Naar du bruger system boer du have en:

#include <cstdlib>
Avatar billede MLundager Nybegynder
16. august 2010 - 19:35 #4
Hej jeg prøvede med

void f()
{

    Point myLocation(23, 54, 65);
    Point dansLocation;
}

int main()
{
    f();
    system("Pause");
}

og det virker fint og jeg plejer også at bruge int main()
jeg brugte kun void fordi det gjorde de i guiden

Tak for hjælpen :D

smid et svar
Avatar billede arne_v Ekspert
16. august 2010 - 20:06 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester