Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [C++] spiegazione sulle classi

    ciao,
    non è per pigrizia che non cerco in rete ma posto per avere una dritta sicura; mi diite se questo codice deriva/implementa una classe esistente e come faccio a capire se i metodi implementati devono far parte già della classe derivata?

    Spero di aver chiesto cose corrette

    codice:
    // worker thread for a connected client socket
    class T8MyThread : public TServerClientThread
    {
    private:
        bool SendPacket(char *msg, int msglen);
    protected:
        void __fastcall ClientExecute();
    public:
        __fastcall TMyThread(bool CreateSuspended, TServerClientWinSocket *ASocket);
    };
    
    __fastcall TMyThread::TMyThread(bool CreateSuspended, TServerClientWinSocket *ASocket)
        : TServerClientThread(CreateSuspended, ASocket)
    {
    }

  2. #2
    Quote Originariamente inviata da misterx Visualizza il messaggio
    ciao,
    mi diite se questo codice deriva/implementa una classe esistente
    T8MyThread deriva (eredita) da TServerClientThread.
    e come faccio a capire se i metodi implementati devono far parte già della classe derivata?
    Eh?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    T8MyThread deriva (eredita) da TServerClientThread.

    Eh?
    immaginavo di non essere stato chiaro, ci riprovo

    La classe esposta TMyThread è derivata da TserverClientThread; a sua volta TserverClientThread è derivata dalla classe TThread.
    Da quanto ne ho capito e ricordo, significa che la classe TMyThread eredita tutti i metodi delle classi TserverClientThread e TThread.

    A questo punto chiedo: i metodi dichiarati sopra, sono già presenti nelle classi padre ?
    C'è modo di saperlo senza aprire la classe TThread ?
    In definitiva: c'è modo di sapere se ad esempio il metodo ClientExecute() è già implementato nella classe TThread oppure è una aggiunta alla nuova classe TMyThread ?

    Credo che in gergo si dica overloading o similare; grazie

  4. #4
    Da quanto ne ho capito e ricordo, significa che la classe TMyThread eredita tutti i metodi delle classi TserverClientThread e TThread
    No. Non eredita tutti i metodi bensì solo quelli dichiarati public o protected, quelli privati no.

    A questo punto chiedo: i metodi dichiarati sopra, sono già presenti nelle classi padre ?
    C'è modo di saperlo senza aprire la classe TThread ?
    Puoi provare a chiamare quei metodi senza che tu li abbia implementati e se non sono già stati implementati
    allora otterrai un errore in compilazione.

    Credo che in gergo si dica overloading o similare

    In realtà si dice overriding. Comunque ti consiglio una bella ripassata su questi concetti base della OOP.

  5. #5
    Quote Originariamente inviata da lovesemiramide Visualizza il messaggio
    No. Non eredita tutti i metodi bensì solo quelli dichiarati public o protected, quelli privati no.
    Ni, in realtà li eredita, ma non le sono direttamente accessibili (un metodo public o protected della classe base richiamato tramite la classe derivata può tranquillamente chiamare un metodo private della classe base).
    Puoi provare a chiamare quei metodi senza che tu li abbia implementati e se non sono già stati implementati
    allora otterrai un errore in compilazione.
    In alternativa, da dentro uno dei metodi della classe derivata puoi richiamare un metodo della classe base con la sintassi ClasseBase::Metodo, se il metodo non esiste ottieni un errore di compilazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da lovesemiramide Visualizza il messaggio
    No. Non eredita tutti i metodi bensì solo quelli dichiarati public o protected, quelli privati no.


    Puoi provare a chiamare quei metodi senza che tu li abbia implementati e se non sono già stati implementati
    allora otterrai un errore in compilazione.


    In realtà si dice overriding. Comunque ti consiglio una bella ripassata su questi concetti base della OOP.[/COLOR]
    una ripassata è obbligatoria
    Sto notando che un conto sono le classi java che ti insegnano e implementi all'uni, altro è quando ti ritrovi a lavorare con librerie di classi belle e pronte e devi derivarne alcune per aggiungere caratteristiche adatte ai tuoi scopi. Sto provando ad unire la classe Thread con la classe Tserversocket allo scopo di creare un server che istanzi automaticamente Thread nel momento in cui un lcient si connette, sembra tutto molto complicato.

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.