Spigeazione di classe e funzioni al suo interno

di il
3 risposte

Spigeazione di classe e funzioni al suo interno

Buon giorno a tutti, oggi mi sono imbattuto in un esercizio che non sono riuscito a capire, ovvero perché il seguente codice
#include <cstring>
#include <iostream>
using namespace std;

class punto
{
	public:
		int x,y;
		punto(int x1, int y1) {x = x1; y = y1;}
		punto(int z) {punto (z, z);}
};

int main()
{
	punto p(25);
	cout << "x = " << p.x << ", y = " << p.y << endl;
}
da come output x = 106 e y = 0?

3 Risposte

  • Re: Spigeazione di classe e funzioni al suo interno

    Sei FORTUNATO che ritorni due numeri A CASACCIO ma di valore ragionevole.

    Sintatticamente e' corretto, SEMANTICAMENTE NO.

    I membri di una classe NON SI INIZIALIZZANO in quel modo!
    Piu' specificatamente, hai scritto una versione giusta ed UNA SBAGLIATA.

    STUDIA MEGLIO come si inizializzano i membri di una classe in C++
  • Re: Spigeazione di classe e funzioni al suo interno

    L'esercizio richiedeva cosa ci fosse in output dato quel programma. Comunque ho sbagliato a scrivere il codice, mi ero dimenticato di inserire "int y".
    #include <cstring>
    #include <iostream>
    using namespace std;
    
    class punto
    {
    	public:
    		int x,int y;
    		punto(int x1, int y1) {x = x1; y = y1;}
    		punto(int z) {punto (z, z);}
    };
    
    int main()
    {
    	punto p(25);
    	cout << "x = " << p.x << ", y = " << p.y << endl;
    }
    Solo che ora dopo aver inserito quell'int il compilatore mi da errore. Non riesco a capire perché nel codice di prima ci fosse quell'output e perché ora mi da errore
  • Re: Spigeazione di classe e funzioni al suo interno

    Guarda che ha ragione migliorabile e ti ha già mostrato la soluzione: devi studiare!

    Il delegating constructor si fa così:
    		
    	punto(int z) : punto (z, z) { }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte