![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
второе - объявление функции без параметров возвращающей int. тут скобки не нужны, вызовется конструктор без параметров.
а первое - компилятор обнови http://ideone.com/hturq2 |
|||
|
||||
zzkoderzzzx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.10.2013 Репутация: нет Всего: нет |
c++11 это уже не с++, а очередной С-подобный язык.
не понятно как в обычном с++ реализован вызов конструкторов/деструкторов в new/delete, раз для базовых типов это ошибка. Это сообщение отредактировал(а) zzkoderzzzx - 16.10.2013, 15:35 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
никакой ошибки нет.
будет выполнятся везде. так что это чисто синтаксические особенности, которые к наличию конструктора не относятся (понятно, что на самом деле у встроенных типов конструкторов нет, в смысле - они пустые. но семантически они есть всегда) с++ это то, что описано в стандарте Добавлено через 2 минуты и 12 секунд кстати насчет "истинного С++" http://codepad.org/3OO9pCHz |
|||
|
||||
o2n3e |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2011 Репутация: -4 Всего: -5 |
Модератор: Сообщение скрыто. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Я знал, что это начнётся, и в теме по С++ начнутся вопросы и жалобы по другим языкам программирования. А вот! -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
реальные поцаны юзают фартран
|
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
Блин, агитации o2n3e начинают на меня потихоньку действовать, он вскрывает недостатки о которых сам не задумываешься. Я до этого все узнаваемые нюансы и сложности с++ воспринимал как должное, как естественную природу вещей, но теперь начал задумываться "а как бы было если бы этого не было", согласен с
По теме. Писали что free освобождает память выделенную под объект, а new помимо этого вызывает деструктор. Так вот что включено в память выделенную под объект, разве не все поля со своими данными туда влюкчены и все методы? Значит всё-таки если класс имеет указатели на память сложных или простых объектов, то в области памяти объекта этого класса хранится указатель, а данные существую отдельно и именно для них нужен деструктор? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Эти "костыли" просто так называемый "синтаксический сахар". Введено для унификации. По факту, конструкторы и деструкторы базовых типов вообще ничего не делают (для них даже код не генерится).
Я в них не вижу никакого усложнения кода.
Да. Именно так. В общем случае, объект может выделять ресурсы (не только память, еще, например, файлы, мьютексы, потоки и пр.), а обязанность деструктора их освободить и вернуть системе. |
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
bsa, спасибо, особенно за разъяснение насчет методов классов.
Да уж, ребята, когда заходишь за "фосад ООП", октрывается нелицеприятное зрелище. Какбуд-то бы убрали облицовку и вскрылось внутреннее содержание, иллюзии растворились. Неужели в чисто ООП языках (java, C#) всё также? Это сообщение отредактировал(а) EgoBrain - 18.10.2013, 01:44 |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
В этих языках классы существуют на уровне виртуальной машины. За фасад особо не заглянешь, но порой можно стукнуться об него лбом или немного потереться об него - ограничение в 64KB кода на метод, OutOfMemoryError в PermGen, ClassLoader-ы и т.п. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Чему ты удивляешься? Если заглянуть за фасад языка высокого уровня, то обнаружишь ассемблер. Который на 99% состоит из операций пересылки данных, перехода, арифметических и логических. Так что, какие умные схемы ни строй, в итоге все равно получается машинный код, а в нем ни ООП, ни классов, ни структур... Это так же как дом. Внешне красивый, а начинаешь разбираться из чего он, оказывается: щебень, песок, цемент, сталь, глина (кирпич)... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |