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

    c++,,,dichiarazioni con parentesi e chaimata senza parentesi

    quando dichiaro una funzione senza argomenti devo mettere le
    parentesi es void f(); quando la chiamo metto le parentesi f();
    invece quando dichiaro il costruttore senza parametri
    uso le parentesi
    codice:
    class A 
    {
      public:
            A();
    }
    poi quando chiamo il costruttore non metto le parentesi

    codice:
    int main(){
      A a;
    ...
    }
    perché?? :master:

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Perchè la seconda è una dichiarazione di tipo. Il costruttore non sei tu a chiamarlo, ma viene invocato automaticamente alla costruzione di un oggetto.

    La seconda scrittura è equivalente a una scrittura di questo tipo:
    codice:
    int a;
    float b;
    char c;
    Quello che indichi nella sezione public, invece, è il prototipo del costruttore e serve ad indicare che per la costruzione dell'oggetto non sono secessari parametri.
    Scrivere la prima 1) è equivalente alla seconda 2):
    codice:
    1) A a;
    2) A a = new A();

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    hai scritto A a = new A(),
    allora l'istruzione new si può usare anche senza il puntatore?

    quello che mi sembra incoerente è che se il costruttore accetta il parametro/i si può usare la seguente sintassi A a(b,c);
    invece non si può scrivere A a();

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Non è incoerente... è solo un modo più rapido per scrivere la stessa cosa.

    (questo, sempre per dimostrare che il C/C++ è un BUON linguaggio per imparare a programmare... :gren: < era volutamente ironica!! >).


    la 'a' minuscola è il nome della variabile che tu userai nel programma. Se il costruttore non accetta parametri, non ci vanno le parentesi, mentre se ci DEVONO essere dei parametri, in qualche modo li dovrai passare...

    A me non piace la scrittura:

    A a(b, c);

    preferisco la classica:

    A a = new A(b, c);


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.