This ответ заявляет, что в Java максимальное количество полей объект может иметь это 65536.Максимальное количество полей для C++ объект
Есть ли такие ограничения накладываются на объект в C++?
This ответ заявляет, что в Java максимальное количество полей объект может иметь это 65536.Максимальное количество полей для C++ объект
Есть ли такие ограничения накладываются на объект в C++?
C + +03 стандарта, Приложение B (количество реализации):
Поскольку компьютеры являются конечными, реализации C++ неизбежно ограничены в размерах программ они могут успешно процесса. Каждая реализация должна документировать те ограничения , где известны. Эта документация может содержать фиксированные лимиты , где они существуют, сказать, как вычислить переменные пределы как функции доступных ресурсов, или сказать, что фиксированные ограничения не существуют или неизвестны.
Пределы могут ограничивать количества , которые включают в себя описанные ниже или другие. Номер в скобках, следующий за , для каждого количества рекомендуется как минимум . Однако эти величины являются только рекомендациями и не определяют соответствие.
Список включает
Таким образом, нет определенного предела, но реализация, которая применяет предел, должна «сделать», чтобы предел был как минимум равным указанному значению. Боюсь, я не знаю, что на самом деле делают общие реализации, но если они не документируют это, они либо несовместимы, либо предел «неизвестен». Я предполагаю, что «неизвестный» обычно означает «столько, сколько мы можем поместиться в доступную память во время компиляции».
Btw, я не уверен, какая разница между «членами в классе» и «членами, объявленными в классе». Я думаю, это означает, что если ваш базовый класс состоит из 10 членов данных, а ваш класс объявляет 10 членов, то ваш класс имеет 20 (или 21) членов данных в целом (в зависимости от того, подсчитывается ли подкомпонент базового класса как элемент данных или нет).
Я не верю, что в спецификации C++ есть что-то в этом, но я подозреваю, что разные компиляторы будут иметь разные пределы.
Не существует жесткого ограничения на количество полей, которые может иметь объект, но заявив, что я предполагаю, что это сильно зависит от платформы и компилятора.
Также, вероятно, что-то очень неправильно с дизайном вашего класса, если вы используете даже 100 или более полей объекта, поэтому не должны беспокоиться об ограничениях, а не беспокоиться о дизайне ООП
Возможно, это зависит от платформы, эта страница, к сожалению, ничего не говорит об этом (хотя и полезная в других отношениях) http://msdn.microsoft.ком/EN-US/библиотека/ft39hh4x.aspx – Skurmedel