Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c++]il costruttore non funziona?

    codice:
    class A
    {   
       int i;
    public:
       A();
       ~A();
    }
    
    A::~A() 
    { cout << "distruttore" << endl; }

    caso 1:
    codice:
    A::A()
    {
      i=3; cout << "ciao" << endl;
    }
    
    int main()
    {
      A a();
    }
    in questo caso il programma non stampa la stringa "ciao"
    e non stampa "distruttore"

    caso 2:
    codice:
    A::A(int n)
    {
      i=n; cout << "ciao" << endl;
    }
    
    int main()
    {
      A a(3);
    }
    in questo caso viene stampata la stirnga "ciao"
    e anche la stringa "distruttore"

    sembrerebbe che il costruttore senza parametri
    non venga chiamato e visto non viene chiamato il distruttore
    sembra che non venga istanziato l'oggetto neancjhe
    col costruttore di default. perché?

    N.B. uso il borland gratuito (linea di comando) e il dev c++
    col dev c++ facendo le opportune modifiche come usare
    std::cout invece che cout

  2. #2
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    invece di
    codice:
        A a();
    metti:

    codice:
        A a;
    a me funziona perfettamente se lo metto cosi,usando il gcc, nn pensavo che delle parentesi praticamente inutili dessero simili problemi...

  3. #3
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614

    Re: [c++]il costruttore non funziona?

    Originariamente inviato da wiligelm
    A a();
    togli le parentesi da a.
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  4. #4
    grazie, è vero, adesso funziona anche a me ,
    siccome da qualche parte ho letto che la dichiarazione A a è l'abbreviazione di A a(), quello che ho letto è sbagliato oppure dipende dal compilatore?

  5. #5
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    Originariamente inviato da wiligelm
    grazie, è vero, adesso funziona anche a me ,
    siccome da qualche parte ho letto che la dichiarazione A a è l'abbreviazione di A a(), quello che ho letto è sbagliato oppure dipende dal compilatore?
    dipende dal costruttore, se al costruttore non devi passare nessun parametro allora è inutile aggiungere le parentesi, che invece sono obbligatorie con le funzioni.
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  6. #6

  7. #7

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.