Сообщение Re[4]: Не могу понять ссылки в C++ от 16.06.2024 17:40
Изменено 16.06.2024 17:49 rg45
Re[4]: Не могу понять ссылки в C++
Здравствуйте, r0nd, Вы писали:
R>Если под объектом понимается "нечто в памяти", то утверждение неверно:
Так, чтоб расставить точки над "i". Сылки в C++ — это отдельные от объектов типы данных, так же как и функции:
https://timsong-cpp.github.io/cppwp/n4861/basic.types#1
Неотъемлемым свойсвом всех типов объектов является возможность образования производных типов — указателей на объеты и ссылок на объекты. Но нет в языке С++ таких типов данных как указатели на ссылки и ссылки на ссылки. Потому ссылки — не объекты.
R>Если под объектом понимается "нечто в памяти", то утверждение неверно:
Так, чтоб расставить точки над "i". Сылки в C++ — это отдельные от объектов типы данных, так же как и функции:
https://timsong-cpp.github.io/cppwp/n4861/basic.types#1
[ Note: [basic.types] and the subclauses thereof impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. Types describe objects, references, or functions. — end note]
Неотъемлемым свойсвом всех типов объектов является возможность образования производных типов — указателей на объеты и ссылок на объекты. Но нет в языке С++ таких типов данных как указатели на ссылки и ссылки на ссылки. Потому ссылки — не объекты.
Re[4]: Не могу понять ссылки в C++
Здравствуйте, r0nd, Вы писали:
R>Если под объектом понимается "нечто в памяти", то утверждение неверно:
Так, чтоб расставить точки над "i". Сылки в C++ — это отдельные от объектов типы данных, так же как и функции:
https://timsong-cpp.github.io/cppwp/n4861/basic.types#1
Неотъемлемым свойсвом всех типов объектов является возможность образования производных типов — указателей на объеты и ссылок на объекты. Но нет в языке С++ таких типов данных как указатели на ссылки и ссылки на ссылки. Потому ссылки — не объекты.
Нестатическая член-ссылка даже не является подобъектом родительского объекта:
https://timsong-cpp.github.io/cppwp/n4861/class.mem#4
А под "нечто в памяти" подпадает много чего — функции, виртуальные таблицы и указатели на них, паддинг между членами классов. Не нужно думать, что все, что вам удалось разглядеть в дампе — это все объекты.
R>Если под объектом понимается "нечто в памяти", то утверждение неверно:
Так, чтоб расставить точки над "i". Сылки в C++ — это отдельные от объектов типы данных, так же как и функции:
https://timsong-cpp.github.io/cppwp/n4861/basic.types#1
[ Note: [basic.types] and the subclauses thereof impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. Types describe objects, references, or functions. — end note]
Неотъемлемым свойсвом всех типов объектов является возможность образования производных типов — указателей на объеты и ссылок на объекты. Но нет в языке С++ таких типов данных как указатели на ссылки и ссылки на ссылки. Потому ссылки — не объекты.
Нестатическая член-ссылка даже не является подобъектом родительского объекта:
https://timsong-cpp.github.io/cppwp/n4861/class.mem#4
[Note 2 : A non-static data member of non-reference type is a member subobject of a class object (6.7.2). —end note]
А под "нечто в памяти" подпадает много чего — функции, виртуальные таблицы и указатели на них, паддинг между членами классов. Не нужно думать, что все, что вам удалось разглядеть в дампе — это все объекты.