Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2013, 20:08   #11
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers

с разморозкой. так работал только CFront. у крестов свой компилятор лет 20 минимум
Который однако ж не с нуля рисовали.

После компиляции нет никаких классов, и никаких иерархий.
Чистый процедурный императив.

Важно понимать, что ООП существует лишь в голове программиста. А компилятору, с некоторыми оговорками безразлично, что функция(объект), что объект.Функция()
_Bers вне форума Ответить с цитированием
Старый 24.01.2013, 21:36   #12
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_Bers
Цитата:
После компиляции нет никаких классов, и никаких иерархий.
Чистый процедурный императив.
и что, из этого следует, что, цитирую
Цитата:
с++ компилятор, это на самом деле транслятор на язык си, и компилятор си.
?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 25.01.2013, 01:48   #13
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers

и что, из этого следует, что, цитирую

?
Ну понятно, что я утрирую. И на выхлопе будут обж, а не с файлы.

Смысл в том, что приплюснутый компиль обрабатывает c-style ничуть не хуже, чем сишный. Что неудивительно, учитывая историческое родство и языков, и их совместимость, а значит и общность используемых технологий.

С++ будет использовать все свое сишное наследие.

Просто на компилятор с++ ложится поддержка дополнительных технологий, таких как полиморфизм, всякие там шаблоны и прочее.

В любом случае, весь код будет приведет к обычному процедурному с-style, и обработан так, как буд то бы это обычный си-код
_Bers вне форума Ответить с цитированием
Старый 26.01.2013, 17:15   #14
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

bers, тема.
Цитирую пост
Цитата:
COOLibin

если до сих пор непонятно откуда растут корни, поясняю полностью.
издревле повелось, что компиляторы с "продвинутых" и общеупотребительных языков программирования (asm, c, c++ и др.) разделяют код между т.н. юнитами компиляции (модулями). Каждый модуль может быть скомпилирован отдельно от других, производя на свет файл *.obj формата (универсальный формат), которые потом с помощью линкера подшиваются в один конечный исполняемых файл *.exe.
Так уж повелось, что в целях унификации фирмы-производители компиляторов старались сохранить формат *.obj единым для всех языков (по возможности), что даёт хорошую возможность создавать программы на из юнитов на разных языках программирования. Например модуль на чистопородном ASM можно было сшить в программу на чистопородном C.
Обратная совместимость с этой концепцией ввела в язык C++ некие "странные" на первый взгляд вещи.

*.obj файл исторически устроен сравнительно просто: в нём есть изолированные блоки откомпилированного уже машинного кода и данных, которые сдобрены "метками" - мнемоническими обозначениями, указывающими куда-нибудь внутрь сего дела. Причем в *.obj файле принципиально неизместно чем именно является метка - адресом глобальной переменной, или ф-ии - даже для линкера это непринципиально.

Со старыми языками всё это работало без проблем - экспортные ф-ии и переменные получали совпадающую со своим программным именем метку в *.obj файле и дальше всё шло как по маслу.

А вот в C++ дядя Страуструп ввел такую фичу, как перегруженные ф-ии. Это такие звери, которые хотя и называются в программе одинаково, но имеют разный набор параметров, а следовательно разные тела, наполнение и содержание.
И вот чтобы эту концепцию протянуть через *.obj файлы без конфликта меток пришлось ввести т.н. name mangling. С помощью этого механизма имена переменных и ф-ий в *.obj файлах дополняются специальными длинными абреввиатурами, чтобы исключить конфликт имен конечных перегруженных ф-ий.
Проблема в том, что этот механизм срабатывает всегда и объявив void some(); ты в *.obj файле получить можешь имя для ф-ии вроде _some_v_f. Чтобы нормально спрягать код на C++ с C или ASM, где name mangling отсутствует, введено extern "C", которое отключает сей механизм у экспортируемых или импортируемых имен переменных/ф-ий. Логично, что extern "C" ф-ии не могут быть перегружены.
Так понятно? =)
да я соглашусь что в .obj, но внутри них всё разное. Если бы так всё просто было.... небыло бы заморочек с использованием в Delphi наших сишных обж. А delphi обж ты не откроешь вовсе.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 27.01.2013, 11:45   #15
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Ну это ты уже затрагиваешь тему полиглотов)
Когда разные части проекта пишутся на разных языках.

Это уже очень крутой уровень. Я до такого покамест не дорос) Поэтому, ничего тебе про это сказать не могу.
_Bers вне форума Ответить с цитированием
Старый 27.01.2013, 12:01   #16
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Причем здесь формат OBJ файлов?
То, что name mangling не стандартизован является заслугой C++ комитета и к размеру и скорости выполнения отношения не имеет.
waleri вне форума Ответить с цитированием
Старый 27.01.2013, 12:47   #17
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Причем здесь формат OBJ файлов?
То, что name mangling не стандартизован является заслугой C++ комитета и к размеру и скорости выполнения отношения не имеет.
Мы уже ушли от этой темы и пришли к тому, что всё уходит в c-style. читай посты waleri.
____
Я лишь хотел сказать этим постом, что да можно в c-style... допишите метку
Код:
extern "C" {....тут много кода...}
Но если эту метку не принимать, то там далеко не c-style.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 27.01.2013 в 12:54.
Perchik71 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить связи между объектами andrey_rtv Общие вопросы по программированию, компьютерный форум 2 04.04.2013 18:07
Связь между объектами в php dr.Chas PHP 5 04.10.2011 09:58
По поводу связи кнопки с объектами Tador Общие вопросы Delphi 2 27.11.2010 20:24
Как посмотреть связи между таблицами в php? Alar WordPress и другие CMS 2 15.11.2010 11:21
как переключаться между объектами в сцене? lerka Мультимедиа в Delphi 5 19.03.2009 14:45