Ciao, sto cimentandomi con i costruttori di copia.. x fare un test ho scritto un po' di codice ma non riesco a capire alcuni dettagli...

posto il codice che è di diversi files ma ho preso i pezzi critici


codice:


#include <conio.h>
#include <iostream>

using namespace std;

class nodo {
	private:
		int ele;
		
	public:
		nodo *next;
		nodo *prev;
		inline int get_ele(){return ele;}
		explicit nodo(int e):ele(e) {};
		
		nodo & operator= (const nodo &n)
		{
                  //ele = n->get_ele();
                    ele = 10;
                    next = NULL;
                    prev = NULL;
                    return *this;
                 }

};




int main(int argc, char *argv[])
{
	int e;
	cout << "inserisci elemento: \n";
	cin >> e;
	nodo n(e);
	cout << "il nuovo nodo n contiene:  " << n.get_ele() << endl;
	cout << " mo costruiamo la copia \n";
        nodo n2 = n;
	//nodo n2(1);
        //n2 = n;
	cout << "la copia n2 di nodo n contiene:  " << n2.get_ele() << endl;
        getch();
        return EXIT_SUCCESS;
}
il problema è ke nella versione che ho postato è come se non venisse usato l'overload dell'operatore di assegnamento e da output si capisce ke viene usato il costruttore di copia implicito che fa il suo dovere, se invece scommento le 2 righe commentate e commento "nodo n2 = n" tutto avviene come mi aspettavo, viene caricato il costruttore di copia, e come oh deciso (x testare) scrive 10 nella copia...

perché nel primo caso ciò non avviene ??

e seconda domanda..

nel costruttore di copia ho commentato ele = n->get_ele(); che sarebbe la versione finale.. ma il compilatore nn me la passa proprio... n è passato per rifemento.. non capisco xkè non accetta la ->


grazie a chiunque mi risponda !