hardware::ioport *port = new(0xWHATEVER) hardware::ioport();
The () parentheses after ioport() invokes automatic zero-initialization on pod members of the ioport class. Clearly you don't like this feature, just remove them. Fix:
hardware::ioport *port = new(0xWHATEVER) hardware::ioport;