Могут ли конструкторы трех векторов мешать друг другу? (поскольку 3 из них находятся в одном и том же адресе памяти)
Стандарт C ++ не позволяет вашей программе, так что это (в лучшем случае!) Определяется реализацией того, что происходит.
Если, скажем, ваша реализация вызывает все три стандартных конструктора, и все они выделяют память, и сохраняет указатель на вновь выделенное пространство, у вас есть утечка памяти (первые два выделения перезаписываются третьим). 1007 *
Если все деструкторы вызываются и все они освобождают «свою» память, вы будете делать двойное освобождение (тройное, фактически); это может повредить структуру данных распределения, что является плохой вещью. Будьте счастливы, если рухнете, потому что отладить намного сложнее, если вы этого не сделаете.
Я думаю, что эти проблемы могут быть , почему стандарт не позволяет этого.
(Более чувственной вещью может быть только создание по умолчанию первого класса, но это все же не чувственно, просто менее безумно ...)