Memoria dinamica en C++ ======================= Esto: Nodo n(25, nullptr); serviria para reservar en tiempo de compilacion el espacio de memoria para un objeto de tipo Nodo, que tendria 25 en n.dato y nullptr en n.siguiente. Pero, en tiempo de compilacion, no sabemos cuantos nodos necesitara la pila. Por ello, los creamos en tiempo de ejecucion cuando los necesitamos. Esto: Nodo * n; lo que reserva en tiempo de compilacion no es el espacio que ocupa un nodo sino el espacio que ocupa la direccion de un nodo. Esto: n = new Nodo(25, nullptr); pide en tiempo de ejecucion espacio para un nodo, lo inicializa con el constructor de Nodo, y guarda su direcion en n. Despues de eso, n->dato vale 25 y n->siguiente vale nullptr. n->dato es equivalente a (*n).dato, y *n es el objeto que esta en la direccion n (el objeto al que apunta n).