в принципе:
1. Тип класса в C++ — это тип значения. Это означает, что при создании экземпляра объекта класса память выделяется в стеке.
Таким образом, если тип класса определен следующим образом
класс А
{
публика:
интервал я;
А а;
}
Это попадет в бесконечный цикл, потому что при создании экземпляра объекта A A необходимо вычислить объем памяти, занимаемый таким объектом, на основе типа члена (члены данных определяются на основе типа и кода члена). функция хранится в exe. Чтобы сопоставить память, просто используйте указатель, чтобы указать адрес памяти, и добавьте некоторую информацию описания класса, но sizeof не отображает использование памяти этой частью информации описания при обнаружении объекта). a своего собственного типа, он вычисляет данные, используемые пространством памяти, а a имеет тип A, поэтому повторите.
Итак, в С++
Может содержать указатели своего типа (часто используются в связанных списках).
класс А
{
публика:
интервал я;
А*па;
}
Объем памяти, занимаемый переменной-указателем, легко определить. Длина машинных слов показывает, сколько места занимает переменная-указатель.
2. Тип класса в C# — это ссылочный тип, который по сути является указателем.
Таким образом, все объекты классов в C# сами по себе имеют размер 4 байта (32-битная машина) и содержат адрес памяти, указывающий на пространство кучи.
класс А
{
общественный интервал я;
общественный А;
}
Объект = новый A();
Сам объект занимает 4 байта памяти и хранит адрес кучи. Размер этой памяти составляет 8 байт (int 4 байта, a также четыре байта). При создании экземпляра a содержимое a не равно нулю. сохраняет другой адрес в куче, указывая на 8-байтовое пространство памяти.
Поскольку мы можем определить, сколько места в памяти занимает объект A (4 байта, все объекты класса C# занимают 4 байта на 32-битной машине), мы можем определить
-