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

    [C++] Domanda sulle classi

    In una classe del linguaggio C++ non può essere definito un campo che sia una istanza della classe, ma un puntatore a un oggetto della classe stessa si! Per quale motivo?
    La curiosità è la fonte della conoscenza.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Nemmeno in una struct del C se è per quello. Nella seconda edizione di "Linguaggio C" gli autori liquidano la cosa in tre parole. Non è permesso.
    Il C++ riprende semplicemente il concetto.

  3. #3
    non hai risposto alla domanda
    La curiosità è la fonte della conoscenza.

  4. #4
    Guarda che questa limitazione non esiste, come ti dimostra questo esempio.
    codice:
    #include <iostream>
    class test
    {
    public:
        int dummy;
        test()
        {
            dummy=10;
            std::cout<<"Nel costruttore senza parametri di 'test'"<<std::endl;
        };
        test(int Dummy)
        {
            dummy=Dummy;
            std::cout<<"Nel costruttore parametrizzato di 'test'; dummy="<<dummy<<std::endl;
        };
    };
    class test2
    {
    public:
        test testInstance;
        test2()
        {
            std::cout<<"Nel costruttore senza parametri di 'test2'"<<std::endl;
        };
        test2(int DummyValue) : testInstance(DummyValue)
        {
            std::cout<<"Nel costruttore parametrizzato di 'test2'; DummyValue="<<DummyValue<<std::endl;
        };
    
    };
    int main()
    {
        test2 t2_1;
        test2 t2_2(50);
        std::cin.sync();
        std::cin.ignore();
        return 0;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Originariamente inviato da MItaly
    Guarda che questa limitazione non esiste
    non hai capito la domanda, in cui P4nico si chiede perché non sia possibile fare robe del genere:
    Codice PHP:
    class CTest{
        
    CTest fTest// Non può essere compilato;
        
    CTest fTestPtr// ok
    }; 
    ;-)

  6. #6
    Ops... Be', perché altrimenti quella classe occuperebbe spazio infinito, visto che ogni istanza della classe ne conterrebbe un'altra che ne conterrebbe un'altra ancora e così via. Invece con un puntatore questo problema non si pone: può essere impostato a NULL, può puntare a this, può creare dei "puntamenti" circolari (il puntatore dell'istanza A punta all'istanza B, il cui puntatore punta a C, il cui puntatore punta a D, il cui puntatore punta ad A), ..., e in ogni caso il problema è delegato al programmatore, che si arrangia come meglio crede.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Originariamente inviato da MItaly
    Ops... Be', perché altrimenti quella classe occuperebbe spazio infinito, visto che ogni istanza della classe ne conterrebbe un'altra che ne conterrebbe un'altra ancora e così via. Invece con un puntatore questo problema non si pone: può essere impostato a NULL, può puntare a this, può creare dei "puntamenti" circolari (il puntatore dell'istanza A punta all'istanza B, il cui puntatore punta a C, il cui puntatore punta a D, il cui puntatore punta ad A), ..., e in ogni caso il problema è delegato al programmatore, che si arrangia come meglio crede.
    Ora che hai capito cosa indendevo mi hai dato davvero 1 ottima risposta, ti ringrazio.
    La curiosità è la fonte della conoscenza.

  8. #8
    Prego, ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

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.