Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] Metodi e classi

  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    [C++] - Metodi e classi

    codice:
    class Book
    {
    public:
      Book( const string& title ) : title_( title ) { n_++; }
      const string& title() const { return title_; }
      static int numberOfBooks() { return n_; }
    private:
      string title_;
      static int n_;
    };
    vorrei sapere di questa classe, trovata su internet, cosa significano alcune cose:

    costruttore book: perché il paramentro title dovrebbe essere una costante :master: ? Cosa vuol dire tutto il metodo title? Perché quei const di qua e di la?

    Cosa ha di particolare un metodo statico?

    Grazie e ciao

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772

    Re: [C++] - Metodi e classi

    class Book
    {
    public:
    Book( const string& title ) : title_( title ) { n_++;}
    const string& title() const { return title_; }
    static int numberOfBooks() { return n_; }
    private:
    string title_;
    static int n_;
    };


    costruttore book: perché il paramentro title dovrebbe essere una costante?
    Forse per sottolineare che la stringa passata non viene modificata.
    Cmq poteva risparmiarsi di utilizzare la constructor initializer list, che nn è necessaria.

    Cosa vuol dire tutto il metodo title? Perché quei const di qua e di la?
    Restituisce il titolo del libro. La funzione è const per sottolineare (e quindi correggere a tempo di compilazione) che al suo interno l'oggetto Book nn viene modificato.

    p.s. in C++ nn esistono i methods. Quello è Java. In C++ esistono le member functions

    Cosa ha di particolare un metodo statico?
    Per essere invocata senza far riferimento ad un oggetto della classe.
    Cioè puoi invocarlo come Book::numberOfBooks();
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    Re: Re: [C++] - Metodi e classi

    Originariamente inviato da infinitejustice
    p.s. in C++ nn esistono i methods. Quello è Java. In C++ esistono le member functions
    Come chiamare lettera corrispondenza...cioè la stessa cosa

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772

    Re: Re: Re: [C++] - Metodi e classi

    Originariamente inviato da FinalFantasy
    Come chiamare lettera corrispondenza...cioè la stessa cosa
    ...come usare gli riferito ad un soggetto femminile invece di le.
    La gente ti capisce lo stesso, ma nn è corretto
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il termine metodo deriva dalla teoria della programmazione orientata agli oggetti.
    Un metodo è una funzione che serve a manipolare i dati di un oggetto. Questo indipendentemente dal linguaggio utilizzato.

    Che dopo in C++ i metodi vengano implementati mediante funzioni membro (o member functions) è un altro discorso.

    Dalla teoria della programmazione Object Oriented si evince che un oggetto è una struttura dati dotata di proprietà (che ne caratterizzano lo stato) e di metodi (funzioni che ne permettono la manipolazione e l'interazione con gli altri componenti dell'applicazione).


    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

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352

    Re: [C++] - Metodi e classi

    codice:
      Book( const string& title ) : title_( title ) { n_++; }
    qui il const serve a dire che l'oggetto passato non deve esere modificato; ma non serve solo a questo; se ometi il const potrai verificare che il compilatore non ti acceta dichiarazioni di questo tipo:

    Book b("ciao");

    ovvero non ti permette di passare al costruttore, o a un metodo, una reference ad un oggetto creato "al volo" se tale parametro non è stato dichiarato come const

    codice:
    const string& title() const { return title_; }
    qui il primo consto serve a dire che come prima il valore ritornato è una reference costante, mentre il secondo se non ricordo male sta a dire che la funzione title non modifica i dati dell'oggetto.

    La presenza degli oggetti in quanto tale e delle reference, oltre ai puntatori ad oggetti, purtoppo appesantisce e complica veramente tanto la sintassi del c++

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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.