LINUX.ORG.RU

История изменений

Исправление safocl, (текущая версия) :

но ведь ты не будешь отрицать чо указатель QWindow *win создан из указателя QObject *watched???
получается чо создается указатель win который использует уже созданный в памяти блок объекта QObject *watched... а дополнительные для функционирования класса QWindow поля где создались?

я проверял на тестовом примере — область начала памяти таких объектов одна и таже, т.е. адрес указателей один... но размер разный, соответственно у наследника больше на количество доп полей... однако не понятно, где енти поля находятся в памяти, вроде же стандарт гарантирует чо поля класса находятся подобно массивам — вплотную, — из-за чего появляются и предупреждения о дополнительном выравнивании...
или компилятор резервирует место при таком коде для всех полей классов наследников созданных таким способом из родителя на этапе компиляции?

или ты имееш ввиду что туда в функцию передается именно наследник класса QObject — класс QWindow ? и только в ентом случае будет все остальное? Для реализации полиморфизма...

однако даже енто не отменяет моего тестового опыта, где такого не происходит...

Исправление safocl, :

но ведь ты не будешь отрицать чо указатель QWindow *win создан из указателя QObject *watched???
получается чо создается указатель win который использует уже созданный в памяти блок объекта QObject *watched... а дополнительные для функционирования класса QWindow поля где создались?

я проверял на тестовом примере — область начала памяти таких объектов одна и таже, т.е. адрес указателей один... но размер разный, соответственно у наследника больше на количество доп полей... однако не понятно, где енти поля находятся в памяти, вроде же стандарт гарантирует чо поля класса находятся подобно массивам — вплотную, — из-за чего появляются и предупреждения о дополнительном выравнивании...
или компилятор резервирует место при таком коде для всех полей классов наследников созданных таким способом из родителя на этапе компиляции?

или ты имееш ввиду что туда в функцию передается именно наследник класса QObject — класс QWindow ? и только в ентом случае будет все остальное?

Исходная версия safocl, :

но ведь ты не будешь отрицать чо указатель QWindow *win создан из указателя QObject *watched???
получается чо создается указатель win который использует уже созданный в памяти блок объекта QObject *watched... а дополнительные для функционирования класса QWindow поля где создались?

я проверял на тестовом примере — область начала памяти таких объектов одна и таже, т.е. адрес указателей один... но размер разный, соответственно у наследника больше на количество доп полей... однако не понятно, где енти поля находятся в памяти, вроде же стандарт гарантирует чо поля класса находятся подобно массивам — вплотную, — из-за чего появляются и предупреждения о дополнительном выравнивании...
или компилятор резервирует место при таком коде для всех полей классов наследников созданных таким способом из родителя на этапе компиляции?