Нет - в C ++ вложенные классы влияют только на имена и видимость, а не на семантику самого класса. Что касается сгенерированного кода, то вложенный класс ничем не отличается от того, который не является вложенным.
Все, что изменилось, это видимость и имя (например, если он находится в разделе private:
внешнего класса, он не виден внешнему миру, а если он находится в разделе public:
, он виден, но ( конечно), чтобы назвать его, вы используете outer_class::inner_class
. Хотя это все еще совершенно отдельный класс - например, вы можете создать экземпляр внутреннего класса без создания какого-либо экземпляра внешнего класса.
Редактировать: Извините, я пропустил часть вашего вопроса. В C ++ 0x внутренний класс имеет доступ к закрытым частям внешнего класса - по сути, внешний класс объявляет внутренний класс своим другом, поэтому частные имена видны, но вам все равно нужно передайте ему что-то вроде ссылки на объект внешнего класса, прежде чем он сможет вызывать любые нестатические функции-члены внешнего класса.
Хотя это еще не так, я считаю, что большинство компиляторов уже реализовали эту конкретную часть.