Нестандартная планировка: Необычная планировка квартиры | Нестандартные планировки квартир (фото)

Спальня вкривь и кухня вкось: откуда берутся экстремальные планировки

https://realty.ria.ru/20190313/1551759333.html

Спальня вкривь и кухня вкось: откуда берутся экстремальные планировки

Спальня вкривь и кухня вкось: откуда берутся экстремальные планировки — Недвижимость РИА Новости, 13.03.2019

Спальня вкривь и кухня вкось: откуда берутся экстремальные планировки

Квартиры в виде искривленной трапеции с вогнутыми стенами и комнатами-треугольниками – в наши дни это уже не просчет планировщиков, а «фишка» проекта, способная Недвижимость РИА Новости, 13.03.2019

2019-03-13T15:12

2019-03-13T15:12

2019-03-13T15:12

realty-гид – риа недвижимость

жилье

дизайн

архитектура

квартира

/html/head/meta[@name=’og:title’]/@content

/html/head/meta[@name=’og:description’]/@content

https://cdnn21.img.ria.ru/images/155175/92/1551759258_0:316:3072:2044_1920x0_80_0_0_1928243c22284849d4c15c2325700728.jpg

Квартиры в виде искривленной трапеции с вогнутыми стенами и комнатами-треугольниками – в наши дни это уже не просчет планировщиков, а «фишка» проекта, способная повлиять на стоимость квадратных метров в сторону увеличения. Сайт «РИА Недвижимость» решил узнать, пользуются ли такие экстравагантные квартиры спросом, кто их покупает и как оптимально разместить в таком многоугольнике все необходимое. В подавляющем большинстве случаев нестандартные планировки с треугольными или трапециевидными помещениями, округленным стенами – это следствие, а подчас и «жертва» красивого экстерьера здания, его округлых форм, изгибов и различных архитектурных инноваций, говорит начальник отдела аналитики компании «Мосреалстрой» Екатерина Николаева. Именно стремление сделать здание необычным, узнаваемым и запоминающимся приводит в результате к подобным компромиссам в интерьере. В девелоперской практике сложно найти пример, когда нестандартные планировки были целью, отмечает собеседница агентства. По ее словам, в недорогом жилье класса «стандарт» и «комфорт», особенно если речь идет о площадях меньше 50 квадратных метров, нестандартная планировка будет скорее минусом, поскольку затруднит обычный человеческий быт. В такой квартире будет непросто или даже невозможно расставить необходимую мебель и организовать пространство для жизни, особенно, если площадь «неправильной» комнаты меньше 16 квадратных метров. Покупатели легче соглашаются с нестандартными планировками, если площадь отдельных помещений в квартире превышает 20-25 квадратных метров, объясняет Николаева. Однако при прочих равных покупатель чаще выбирает квартиру с прямоугольными комнатами, поэтому небольшие лоты с неправильной геометрией зачастую продают с существенным дисконтом.По мнению замдиректора по продажам ГК «Гранель» Сергея Нюхалова, большинство покупателей пока не готовы к каким-то сильно нестандартным планировкам – процент предложения таких квартир на рынке незначителен, около 2%. Девелоперы выводят на рынок квартиры с необычными планировками, чтобы выделиться на фоне конкурентов – в большинстве своем они позиционируют их как уникальное предложение, добавляет эксперт.»Среди необычных предложений на рынке жилья сегодня можно увидеть квартиры с круглыми стенами и углами, всевозможными эркерами, большими террасами, двухуровневые квартиры. Также сюда можно добавить необычно большие площади (студии по 50 квадратных метров, двухкомнатные квартиры 100 квадратных метров и так далее), однако в итоге все это требует тщательной дизайнерской проработки», – говорит Нюхалов. Если необычная планировка появилась не в результате ошибки девелопера, а наоборот – ее можно назвать архитектурной изюминкой проекта, и как раз такие квартиры продаются с хорошей наценкой, обращает внимание заместитель генерального директора fee-девелоперской компании «Kaskad Недвижимость» Ольга Магилина.Оригинальная конфигурация квартиры или апартамента может стать преимуществом в более высоких классах, где большая площадь (от 150 квадратных метров) позволяет не беспокоиться о расстановке мебели, а нестандартная планировка открывает простор для воплощения концептуальных дизайнерских идей, рассуждает Николаева.»Позиционирование жилья с нестандартной планировкой значительно зависит от класса и назначения. Например, апартаменты с полукруглыми стенами в «Сити» привлекут внимание прогрессивно мыслящих людей, но вряд ли подойдут большой семье. Неплохим компромиссом может стать просторная квартира, где большинство помещений стандартной формы, и лишь, допустим, гостиная имеет полукруглый выступ с панорамным остеклением», – объясняет эксперт «Мосреалстроя». По ее словам, такие проекты можно встретить в загородных ЖК, где более низкая стоимость квадратного метра позволяет покупателям жилья комфорт-класса рассматривать квартиры большей площади. И если окно такой полукруглой гостиной будет выходить на лес, то, безусловно, застройщик будет позиционировать нестандартную планировку как яркое преимущество.Если раньше основную массу покупателей квартир с «геометрическими странностями» составляли продвинутые люди, для которых это уже далеко не первая покупка в новостройке, и у которых уже есть личный дизайнер и желание попробовать что-то особенное, то сегодня оригинальная геометрия не пугает даже консервативную аудиторию, утверждает директор департамента недвижимости Sezar Group Виктор Прокопенко. Хотя все же квартиры нестандартных планировок интересуют больше молодой сегмент покупателей – до 35 лет, обращает внимание Нюхалов. Можно говорить о том, что новое поколение покупателей стремится к чему-то визуально другому, отличающемуся от советских планировочных решений. Особым покупательским спросом, по наблюдениям Прокопенко, пользуется квартира с полукруглой гостиной площадью 25 квадратных метров с потенциальной возможностью объединения с 20-метровой кухней. Базовая планировка предусматривает два просторных санузла, и гардеробную. Потери площади на коридор, традиционные для «распашонок», здесь сведены к комфортному минимуму, объясняет он. Есть также аудитория, которая при покупке недвижимости руководствуется не количеством комнат, а метрами, и чем выше класс проекта, тем таких запросов больше. При этом любой «готовый» вариант становится ограничителем выбора, рассуждает эксперт Sezar Group. Впрочем, так называемый «простор для фантазии», который якобы открывают нестандартные планировки, даже для дизайнеров часто оборачивается головной болью. Так дизайнер Катерина Семихатова сетует на то, что удачных и удобных планировок сейчас не так много, особенно это касается старых домов. В новостройках ситуация обстоит лучше в целом, но встречаются целые комплексы с очень странными и неудобными конфигурациями квартир. «Например, была планировка с длинным коридором, перпендикулярным входной двери. Ширина коридора составляла всего 1,2 метра. Также попадались квартиры форме треугольника, в которой было сложно разместить мебель», – вспоминает Семихатова. «Если квартира треугольная, то ее внутренний объем все же лучше доводить до правильных форм и прямых углов. Поэтому в закоулках лучше устраивать шкафы, формируя их фасадами новый объем», – cоветует Семихатова.

https://realty.ria.ru/20171025/1507524840.html

Недвижимость РИА Новости

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

2019

Недвижимость РИА Новости

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

Новости

ru-RU

https://realty.ria.ru/docs/about/copyright. html

https://xn--c1acbl2abdlkab1og.xn--p1ai/

Недвижимость РИА Новости

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

1920

1080

true

1920

1440

true

https://cdnn21.img.ria.ru/images/155175/92/1551759258_341:0:3072:2048_1920x0_80_0_0_fd689cdfe74d7844e3f2fbfdceb05f0d.jpg

1920

1920

true

Недвижимость РИА Новости

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

Недвижимость РИА Новости

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

realty-гид – риа недвижимость, жилье, дизайн, архитектура, квартира

Realty-гид – РИА Недвижимость, Жилье, Дизайн, Архитектура, Квартира

Квартиры в виде искривленной трапеции с вогнутыми стенами и комнатами-треугольниками – в наши дни это уже не просчет планировщиков, а «фишка» проекта, способная повлиять на стоимость квадратных метров в сторону увеличения. Сайт «РИА Недвижимость» решил узнать, пользуются ли такие экстравагантные квартиры спросом, кто их покупает и как оптимально разместить в таком многоугольнике все необходимое.

© МосреалстройКвартира с нестандартной планировкой кухни-гостиной

© Мосреалстрой

Квартира с нестандартной планировкой кухни-гостиной

В подавляющем большинстве случаев нестандартные планировки с треугольными или трапециевидными помещениями, округленным стенами – это следствие, а подчас и «жертва» красивого экстерьера здания, его округлых форм, изгибов и различных архитектурных инноваций, говорит начальник отдела аналитики компании «Мосреалстрой» Екатерина Николаева. Именно стремление сделать здание необычным, узнаваемым и запоминающимся приводит в результате к подобным компромиссам в интерьере. В девелоперской практике сложно найти пример, когда нестандартные планировки были целью, отмечает собеседница агентства.

По ее словам, в недорогом жилье класса «стандарт» и «комфорт», особенно если речь идет о площадях меньше 50 квадратных метров, нестандартная планировка будет скорее минусом, поскольку затруднит обычный человеческий быт. В такой квартире будет непросто или даже невозможно расставить необходимую мебель и организовать пространство для жизни, особенно, если площадь «неправильной» комнаты меньше 16 квадратных метров.

© МосреалстройОднокомнатная квартира с нестандартной планировкой кухни-гостиной

© Мосреалстрой

Однокомнатная квартира с нестандартной планировкой кухни-гостиной

Покупатели легче соглашаются с нестандартными планировками, если площадь отдельных помещений в квартире превышает 20-25 квадратных метров, объясняет Николаева. Однако при прочих равных покупатель чаще выбирает квартиру с прямоугольными комнатами, поэтому небольшие лоты с неправильной геометрией зачастую продают с существенным дисконтом.

По мнению замдиректора по продажам ГК «Гранель» Сергея Нюхалова, большинство покупателей пока не готовы к каким-то сильно нестандартным планировкам – процент предложения таких квартир на рынке незначителен, около 2%.

Девелоперы выводят на рынок квартиры с необычными планировками, чтобы выделиться на фоне конкурентов – в большинстве своем они позиционируют их как уникальное предложение, добавляет эксперт.

Динамическая геометрия: как визуально расширить узкую и длинную комнату

25 октября 2017, 13:25

«Среди необычных предложений на рынке жилья сегодня можно увидеть квартиры с круглыми стенами и углами, всевозможными эркерами, большими террасами, двухуровневые квартиры. Также сюда можно добавить необычно большие площади (студии по 50 квадратных метров, двухкомнатные квартиры 100 квадратных метров и так далее), однако в итоге все это требует тщательной дизайнерской проработки», – говорит Нюхалов.

Если необычная планировка появилась не в результате ошибки девелопера, а наоборот – ее можно назвать архитектурной изюминкой проекта, и как раз такие квартиры продаются с хорошей наценкой, обращает внимание заместитель генерального директора fee-девелоперской компании «Kaskad Недвижимость» Ольга Магилина.

© МосреалстройКвартира с нестандартными планировками жилых комнат

© Мосреалстрой

Квартира с нестандартными планировками жилых комнат

Оригинальная конфигурация квартиры или апартамента может стать преимуществом в более высоких классах, где большая площадь (от 150 квадратных метров) позволяет не беспокоиться о расстановке мебели, а нестандартная планировка открывает простор для воплощения концептуальных дизайнерских идей, рассуждает Николаева.

«Позиционирование жилья с нестандартной планировкой значительно зависит от класса и назначения. Например, апартаменты с полукруглыми стенами в «Сити» привлекут внимание прогрессивно мыслящих людей, но вряд ли подойдут большой семье. Неплохим компромиссом может стать просторная квартира, где большинство помещений стандартной формы, и лишь, допустим, гостиная имеет полукруглый выступ с панорамным остеклением», – объясняет эксперт «Мосреалстроя».

По ее словам, такие проекты можно встретить в загородных ЖК, где более низкая стоимость квадратного метра позволяет покупателям жилья комфорт-класса рассматривать квартиры большей площади. И если окно такой полукруглой гостиной будет выходить на лес, то, безусловно, застройщик будет позиционировать нестандартную планировку как яркое преимущество.

© Sezar GroupКвартира с гостиной и кухней эркерного типа

© Sezar Group

Квартира с гостиной и кухней эркерного типа

Если раньше основную массу покупателей квартир с «геометрическими странностями» составляли продвинутые люди, для которых это уже далеко не первая покупка в новостройке, и у которых уже есть личный дизайнер и желание попробовать что-то особенное, то сегодня оригинальная геометрия не пугает даже консервативную аудиторию, утверждает директор департамента недвижимости Sezar Group Виктор Прокопенко.

Хотя все же квартиры нестандартных планировок интересуют больше молодой сегмент покупателей – до 35 лет, обращает внимание Нюхалов. Можно говорить о том, что новое поколение покупателей стремится к чему-то визуально другому, отличающемуся от советских планировочных решений.

© Sezar GroupКвартира с треугольной гостиной, потенциально объединяемая с кухней

© Sezar Group

Квартира с треугольной гостиной, потенциально объединяемая с кухней

Особым покупательским спросом, по наблюдениям Прокопенко, пользуется квартира с полукруглой гостиной площадью 25 квадратных метров с потенциальной возможностью объединения с 20-метровой кухней. Базовая планировка предусматривает два просторных санузла, и гардеробную. Потери площади на коридор, традиционные для «распашонок», здесь сведены к комфортному минимуму, объясняет он.

© Sezar GroupКвартира с одной полукруглой спальней и другой спальней-трапецией с острым углом

© Sezar Group

Квартира с одной полукруглой спальней и другой спальней-трапецией с острым углом

Есть также аудитория, которая при покупке недвижимости руководствуется не количеством комнат, а метрами, и чем выше класс проекта, тем таких запросов больше. При этом любой «готовый» вариант становится ограничителем выбора, рассуждает эксперт Sezar Group.

Впрочем, так называемый «простор для фантазии», который якобы открывают нестандартные планировки, даже для дизайнеров часто оборачивается головной болью. Так дизайнер Катерина Семихатова сетует на то, что удачных и удобных планировок сейчас не так много, особенно это касается старых домов. В новостройках ситуация обстоит лучше в целом, но встречаются целые комплексы с очень странными и неудобными конфигурациями квартир.

«Например, была планировка с длинным коридором, перпендикулярным входной двери. Ширина коридора составляла всего 1,2 метра. Также попадались квартиры форме треугольника, в которой было сложно разместить мебель», – вспоминает Семихатова.

© Дизайнер Катерина СемихатоваТреугольная квартира

© Дизайнер Катерина Семихатова

Треугольная квартира

«Если квартира треугольная, то ее внутренний объем все же лучше доводить до правильных форм и прямых углов. Поэтому в закоулках лучше устраивать шкафы, формируя их фасадами новый объем», – cоветует Семихатова.

Ломаная линия: нестандартная планировка квартиры 72 м²

Квартиры

Авторы проекта – Виктория Корнеева и Анна Ахременкова, бюро Shkaf Architects

ПАРАМЕТРЫ ОБЪЕКТА

Тип недвижимости: квартира в современном многоэтажном доме

Метраж: 72,3  м²

Место: г. Москва

Стиль: современный

Основная идея проекта: «создать просторную квартиру со множеством функциональных зон»

Цветовая гамма: темно-синий + белый

Авторы проекта: бюро Shkaf Architects, www.shkaf-architects.com

Гостиная, объединенная с кухней

Фото
Юрий Гришко

Планировка квартира — всегда своеобразный квест для архитектора и декоратора, полоса препятствий.  «Нам было очень интересно решать эту головоломку для наших заказчиков — молодой пары», — рассказывает один из авторов проекта архитектор Виктория Корнеева. В распоряжении бюро Shkaf Architects было 72,3 квадратных метра в современном многоквартирном доме на северо-востоке Москвы. Стояло сразу несколько важных задач  — визуально расширить пространство, уместить все необходимые функциональные зоны, включая два санузла и отдельную гардеробную, плюс создать модный минималистский интерьер. «Заказчикам хотелось, чтобы несмотря на весь аскетизм, пространство вызывало некий эмоциональный отклик,  — говорит архитектор Анна Ахременкова. —  „Эмоциональный“ минимализм — так мы между собой и стали называть стиль этой квартиры».

Гостиная, объединенная с кухней

Фото
ЮРИЙ ГРИШКО

План квартиры: 1. Прихожая 2. 1-ая ванная комната 3. Гостиная, совмещенная с кухней 4. Кабинет 5. Спальня 6. Гардеробная 7. 2-ая ванная комната.

В итоге архитекторы решились отказаться от стандартных вариантов планировки и построили в этих стенах лабиринт с криволинейными объемами и преломляющимися под разными углами стенами и перегородками. Очевидный плюс — множество образовавшихся функциональных зон — для отдыха, для хранения вещей, для работы… За каждой стенкой вас ждет новое открытие! Из прихожей можно попасть в гостиную, а можно пройти в кабинет, оттуда — в изолированную спальню или на кухню, из спальни — в ванную или гардеробную. Сложная геометрия комнат делает пространство ярким и необычным, при том, что оно очень практичное.

Коридор

Фото
ЮРИЙ ГРИШКО

«В центре квартиры — коридор, который по диагонали делит пространство на две части, — рассказывают архитекторы. — Слева от коридора находится небольшая треугольная гардеробная в прихожей, за ней — мраморная ванная комната. Далее проход в общую комнату, объединяющую гостиную, кухню и столовую».

Кабинет

Фото
ЮРИЙ ГРИШКО

За угловой стеной гостиной спрятана узкая L-образная комната, которая в свою очередь разделена на две части встроенной мебелью: в одной части спланирован лаундж, в другой — кабинет. Стены частично облицованы зеркалами, которые отражают свет, льющийся из окна, и визуально расширяют комнаты.

Фото
ЮРИЙ ГРИШКО
Фото
ЮРИЙ ГРИШКО

Справа от коридора в плане обозначена спальня с примыкающей к ней ванной комнатой. За белой перегородкой, которая одновременно является изголовьем кровати, спланирована гардеробная.  

Спальня

Фото
ЮРИЙ ГРИШКО

Палитра во всей квартире аскетичная под стать интерьеру. Стены покрашены в синий и белый цвета. «Основной цвет — белый. Синий мы использовали как фон, чтобы подчеркнуть сложные формы и объемы, которые здесь повсюду», — объясняют архитекторы.

Спальня

Фото
ЮРИЙ ГРИШКО

Ванная комната

Фото
ЮРИЙ ГРИШКО

Ванная комната

Фото
ЮРИЙ ГРИШКО

«Что касается так называемой эмоциональной составляющей нашего минимализма, о которой так мечтали владельцы квартиры, нужного эффекта удалось достичь именно за счет сложной геометрии комнат, — говорит Виктория.  — Мебель и предметы интерьера, гармонично вписанные в пространство, делают композицию сбалансированной».

Гостиная, объединенная с кухней

Фото
ЮРИЙ ГРИШКО

Фрагмент гостиной

Фото
ЮРИЙ ГРИШКО

Ванная комната

Фото
ЮРИЙ ГРИШКО

Коридор

Фото
ЮРИЙ ГРИШКО

Теги

  • белый
  • светлый
  • минималистичный
  • Москва
  • 60-120 квм

c++ — Почему определение «стандартного макета» POD C++11 такое, какое оно есть?

спросил

Изменено 2 года, 2 месяца назад

Просмотрено 9к раз

Я изучаю новое упрощенное определение POD в C++11 (раздел 9. 7)

Класс стандартной компоновки — это класс, который:

  • не имеет нестатических элементов данных типа класса нестандартного макета (или массива таких типов) или ссылки,
  • не имеет виртуальных функций (10.3) и виртуальных базовых классов (10.1),
  • имеет тот же контроль доступа (пункт 11) для всех нестатических членов данных,
  • не имеет базовых классов нестандартной компоновки,
  • либо не имеет нестатических элементов данных в самом производном классе, либо не более одного базового класса с нестатическими элементами данных или не имеет базовых классов с нестатическими элементами данных и
  • не имеет базовых классов того же типа, что и первый нестатический элемент данных .

Я выделил моменты, которые меня удивили.

Что может пойти не так, если мы допустим элементы данных с различным контролем доступа?

Что пошло бы не так, если бы первый элемент данных также был базовым классом? то есть

 структура Foo {};
структура Хорошо: Foo {int x; Фу у;};
структура Bad: Foo {Foo y; интервал х;};
 

Я признаю, что это странная конструкция, но почему Плохой должен быть запрещен, а Хороший ?

Наконец, что может пойти не так, если несколько составных классов будут иметь данные-члены?

  • c++
  • c++11
  • стандартный макет

4

Разрешается привести стандартный адрес объекта класса макета к указателю на его первый член и обратно одним из последующих абзацев, что также часто делается в C:

 структура A { int x; };
А а;
// "px" гарантированно указывает на a. x
int *px = (int*) &a;
// гарантированно указывает на
А *па = (А*)px;
 

Чтобы это работало, первый член и полный объект должны иметь один и тот же адрес (компилятор не может изменить указатель int ни на один байт, потому что он не может знать, является ли он членом A или нет).

Наконец, что может пойти не так, если несколько составных классов будут иметь данные-члены?

Внутри класса члены распределяются по возрастающим адресам в соответствии с порядком объявления. Однако C++ не диктует порядок распределения элементов данных между классами. Если и производный класс, и базовый класс имеют данные-члены, Стандарт не определяет порядок их адресов намеренно, чтобы дать реализации полную гибкость в размещении памяти. Но для того, чтобы вышеуказанное приведение сработало, вам нужно знать, какой член является «первым» в порядке распределения!

Что пошло бы не так, если бы первый элемент данных также был базовым классом?

Если базовый класс имеет тот же тип, что и первый член данных, реализации, размещающие базовые классы перед объектами производного класса в памяти, должны иметь байт заполнения перед элементами данных объекта производного класса в памяти (базовый класс должен иметь size one), чтобы не использовать один и тот же адрес как для базового класса, так и для первого члена данных (в C++ два разных объекта одного типа всегда имеют разные адреса).

Но это снова сделало бы невозможным приведение адреса объекта производного класса к типу его первого члена данных.

13

В основном речь идет о совместимости с C++03 и C:

  • одинаковый контроль доступа — реализациям C++03 разрешено использовать спецификаторы контроля доступа как возможность переупорядочивать (группы) членов класса, например, чтобы лучше упаковать.
  • более одного класса в иерархии с нестатическими элементами данных — С++ 03 не говорит, где расположены базовые классы, или опущено ли заполнение в подобъектах базового класса, которые будут присутствовать в полном объекте того же типа. .
  • базовый класс и первый член того же типа — из-за второго правила, если тип базового класса используется для члена данных, то он должен быть пустым классом. Многие компиляторы реализуют оптимизацию пустого базового класса, поэтому то, что Андреас говорит о подобъектах с одинаковым адресом, будет правдой. Я не уверен, однако, что касается классов стандартной компоновки, что означает, что для подобъекта базового класса плохо иметь тот же адрес, что и у первого члена данных того же типа, но это не имеет значения, когда подобъект базового класса имеет тот же адрес, что и у первого члена данных другого типа. [Редактировать: это потому, что разные объекты одного типа имеют разные адреса, даже если они являются пустыми подобъектами. Спасибо Йоханнесу]

C++0x, вероятно, мог бы определить, что эти вещи также являются типами стандартной компоновки, и в этом случае он также определил бы, как они расположены, в той же степени, что и для типов стандартной компоновки. Ответ Йоханнеса идет дальше, посмотрите на его пример хорошего свойства классов стандартного макета, которому эти вещи мешают.

Но если бы он это сделал, то некоторые реализации были бы вынуждены изменить то, как они размещают классы, чтобы соответствовать новым требованиям, что является неприятностью для совместимости структур между различными версиями этого компилятора до и после C++0x . По сути, это нарушает C++ ABI.

Мое понимание того, как определялась стандартная компоновка, заключается в том, что они смотрели на то, какие требования POD можно было бы смягчить, не нарушая существующие реализации. Поэтому я предполагаю, не проверяя, что вышеприведенные примеры являются примерами, в которых некоторая существующая реализация C++03

использует природу класса, не относящуюся к POD, для выполнения чего-то, что несовместимо со стандартной компоновкой.

3

Что может пойти не так, если мы допустим элементы данных с различным контролем доступа?

Текущий язык говорит о том, что компилятор не может переупорядочивать члены под одним и тем же контролем доступа. Нравится:

 структура x
{
публичный:
    интервал х;
    инт у;
частный:
    интервал г;
};
 

Здесь x должен располагаться перед y, но ограничений на z относительно x и y нет.

 структура у
{
публичный:
    интервал х;
публичный:
    инт у;
};
 

Новая формулировка гласит, что и по-прежнему являются POD, несмотря на два общедоступных . На самом деле это ослабление правил.

Что касается того, почему Плохой не разрешен, позвольте мне процитировать статью, которую я нашел:

Это гарантирует, что два подобъекта с одинаковым типом класса и которые принадлежат одному и тому же наиболее производному объекту, не выделяются в тот же адрес.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2172.html

3

Из пули 5 кажется, что оба не являются модулями, поскольку наиболее производный класс имеет нестатический член данных (int), он не может иметь базовый класс с нестатическим элементом данных.

Я понимаю это так: «только один из «базового» класса (т.е. сам класс или один из классов, от которых он наследуется) может иметь нестатические данные-члены»

2

struct Good также не является стандартным макетом, поскольку Foo и Good имеют нестатический элемент данных.

Таким образом, Good должно быть:

 struct Foo {int foo;};
структура Good: public Foo {Foo y;};
 

, который не соответствует 6-му пункту. Отсюда и 6-я пуля?

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Почему вы не можете использовать offsetof для структур, отличных от POD, в C++?

Ответ Bluehorn правильный, но для меня он не объясняет причину проблемы простыми словами. Я так понимаю:

Если NonPOD не является классом POD, то при выполнении:

 NonPOD np;
нп.поле;
 

компилятор не обязательно обращается к полю, добавляя некоторое смещение к базовому указателю и разыменовывая. Для класса POD стандарт C++ обязывает его делать это (или что-то эквивалентное), но для класса без POD это не так. Вместо этого компилятор может считать указатель из объекта, добавить смещение к этому значению , чтобы указать место хранения поля, а затем разыменовать. Это обычный механизм виртуального наследования, если поле является членом виртуальной базы NonPOD. Но это не ограничивается этим случаем. Компилятор может делать практически все, что ему заблагорассудится. При желании он может вызвать скрытую виртуальную функцию-член, сгенерированную компилятором.

В сложных случаях очевидно невозможно представить местоположение поля как целочисленное смещение. Таким образом, смещение от недопустимо для классов, не относящихся к POD.

В тех случаях, когда ваш компилятор просто так хранит объект простым способом (например, с одиночным наследованием и, как правило, даже с невиртуальным множественным наследованием, и обычно поля, определенные прямо в классе, на который вы ссылаетесь на объект как в отличие от какого-то базового класса), тогда он просто сработает. Вероятно, есть случаи, которые просто так работают на каждом отдельном компиляторе. Это не делает его действительным.

Приложение: как работает виртуальное наследование?

При простом наследовании, если B является производным от A, обычная реализация состоит в том, что указатель на B является просто указателем на A с дополнительными данными B, прикрепленными в конце:

 A* ---> поле A < --- Б*
        поле А
        поле Б
 

При простом множественном наследовании вы обычно предполагаете, что базовые классы B (назовем их A1 и A2) расположены в некотором порядке, характерном для B. Но тот же трюк с указателями не работает:

 A1* ---> поле A1
         поле А1
A2* ---> поле A2
         поле А2
 

A1 и A2 ничего не «знают» о том, что они оба являются базовыми классами B. Поэтому, если вы приведете B* к A1*, оно должно указывать на поля A1, а если вы приведете его к A2 * он должен указывать на поля A2. Оператор преобразования указателя применяет смещение. Таким образом, вы можете получить следующее:

 A1* ---> поле A1 <---- B*
         поле А1
A2* ---> поле A2
         поле А2
         поле Б
         поле Б
 

Затем приведение B* к A1* не изменяет значение указателя, но приведение его к A2* добавляет sizeof(A1) байт. Это «другая» причина, по которой в отсутствие виртуального деструктора удаление B через указатель на A2 идет не так. Он не просто не может вызвать деструктор B и A1, он даже не освобождает нужный адрес.

В любом случае, B "знает", где находятся все его базовые классы, они всегда хранятся с одними и теми же смещениями. Таким образом, при таком расположении offsetof все равно будет работать. Стандарт не требует, чтобы реализации выполняли множественное наследование таким образом, но они часто делают (или что-то в этом роде). Таким образом, offsetof может работать в этом случае в вашей реализации, но это не гарантируется.

А как насчет виртуального наследования? Предположим, что B1 и B2 имеют A в качестве виртуальной базы. Это делает их классами с одиночным наследованием, так что вы можете подумать, что первый прием снова сработает:

 A* ---> поле A <--- B1* A* ---> поле A <--- БИ 2*
        поле А поле А
        поле B1 поле B2
 

Но подождите. Что происходит, когда C происходит (не виртуально, для простоты) как от B1, так и от B2? C должен содержать только 1 копию полей A. Эти поля не могут непосредственно предшествовать полям B1, а также непосредственно предшествовать полям B2. Мы в беде.

Вместо этого реализации могут сделать следующее:

 // экземпляр B1 выглядит так, а B2 аналогично
A* ---> поле A
         поле А
B1* ---> указатель на A
         поле B1
 

Хотя я указал B1*, указывающий на первую часть объекта после подобъекта A, я подозреваю (не утруждая себя проверкой), что фактического адреса там не будет, это будет начало A. Это просто что, в отличие от простого наследования, смещения между фактическим адресом в указателе и адресом, который я указал на диаграмме, будут никогда не следует использовать , если только компилятор не уверен в динамическом типе объекта. Вместо этого он всегда будет проходить через метаинформацию, чтобы правильно добраться до A. Так что мои диаграммы будут указывать туда, так как это смещение всегда будет применяться для интересующих нас целей.

"Указатель" на A может быть указателем или смещением, это не имеет большого значения. В экземпляре B1, созданном как B1, он указывает на (char*)this - sizeof(A) , и то же самое в экземпляре B2. Но если мы создадим C, это может выглядеть так:

 А* ---> поле А
         поле А
B1* ---> указатель на A // указывает на (char*)(this) - sizeof(A) как раньше
         поле B1
B2* ---> указатель на A // указывает на (char*)(this) - sizeof(A) - sizeof(B1)
         поле B2
C* ----> указатель на A // указывает на (char*)(this) - sizeof(A) - sizeof(B1) - sizeof(B2)
         поле C
         поле C
 

Таким образом, для доступа к полю A с помощью указателя или ссылки на B2 требуется больше, чем просто применение смещения.

Следующая запись

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *