|
Глупые вопросы по типам данных |
|
|
|
Apr 26 2007, 14:24
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Oldring @ Apr 26 2007, 16:15)  Страуструп, конечно, величина - не спорю. Только как часто случается, его творение давно живет независимо от автора. В случае со Страуструпом это не так. Это его проект, был, есть и остается. И он возглавляет комитет по новшествам в языке, если склероз не врет. Цитата(Oldring @ Apr 26 2007, 16:15)  А практикующий программист должен читать не только учебники. http://www.google.com/search?q=nonvirtual+methodРечь идет не "о вообще", а конкретно о С++. И в С++ своя устоявшаяся терминология. Функции-члены классов там называются функциями-членами классов, при этом виртуальные функции иногда называют методами. На самом деле все логично. Метод - это термин из ООП. Это функция в объектно-ориентированном дизайне, имеющаяя свойство быть переопределенной в потомке, что дает полиморфное поведение. В языках с динамической типизацией все функции такие в силу базовой модели языка. Но в С++ такими функциями являются только виртуальные, о чем Страуструп и говорит. То, что все функции-члены в С++ часто называют методами - распространенное заблуждение. Часто этим грешат переводчики, что еще больше вносит путаницы в умы читателей. P.S. Вижу, что на меня (вслед за Станиславом) тоже игнор поломался.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 26 2007, 14:51
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(dxp @ Apr 26 2007, 15:24)  В случае со Страуструпом это не так. Это его проект, был, есть и остается. И он возглавляет комитет по новшествам в языке, если склероз не врет. Речь идет не "о вообще", а конкретно о С++. И в С++ своя устоявшаяся терминология. Функции-члены классов там называются функциями-членами классов, при этом виртуальные функции иногда называют методами. На самом деле все логично. Метод - это термин из ООП. Это функция в объектно-ориентированном дизайне, имеющаяя свойство быть переопределенной в потомке, что дает полиморфное поведение. В языках с динамической типизацией все функции такие в силу базовой модели языка. Но в С++ такими функциями являются только виртуальные, о чем Страуструп и говорит. То, что все функции-члены в С++ часто называют методами - распространенное заблуждение. Часто этим грешат переводчики, что еще больше вносит путаницы в умы читателей. P.S. Вижу, что на меня (вслед за Станиславом) тоже игнор поломался.  В стандарте плюсов нет вообще упоминания понятия "метод". Точно также, как не известен стандарт "ООП". То есть "метод" - это неформальное понятие. Страуструп в книжке утверждает, что методами часто называют виртуальные функции. Он, безусловно, прав. Но простой поиск в гугле и мой личный опыт показывают, что также широко говорят "статические методы класса", "виртуальные методы класса" и т. д. И по-русски, и по-английски. Дело не в переводчиках. Хотите узнать "как реально говорят" - лучше не книжки читайте, а поройтесь в поисковиках. Плюсы, конечно, не Смолток. Переопределять можно не все. Т. е. плюсы занимают промежуточную нишу между процедурными языками и чисто объектно-ориентированными, это компромисс, связанный с совместимостью и производительностью. И что с того, что некоторые методы объекта невозможно переопределить в потомке без специальных усилий? Это всего-лишь деталь реализации этого объекта. Вы в чисто процедурных языках вообще классы с функциями-членами встречали? P.S. У меня игнор выборочный. Иногда читаю сообщения, при малейшем сомнении не отвечаю. В споры вступаю по минимуму, когда вижу шанс человека посадить.  Вроде вас со Станиславом и еще узким кругом мне обычно неприятных собеседников.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 26 2007, 16:16
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Oldring @ Apr 26 2007, 18:51)  В стандарте плюсов нет вообще упоминания понятия "метод". Естественно, потому что термин "метод" к С++ никакого отношения не имеет. Цитата(Oldring @ Apr 26 2007, 18:51)  Точно также, как не известен стандарт "ООП". То есть "метод" - это неформальное понятие. Страуструп в книжке утверждает, что методами часто называют виртуальные функции. Он, безусловно, прав. Вот именно. Всякая терминология имеет смысл и пользу, если она вносит ясность, а не путаницу. У Страуструпа все четко и ясно - мухи от котлет отделены: обычные функции-члены от виртуальных (полиморфных), а у вас путаница, все в куче. Цитата(Oldring @ Apr 26 2007, 18:51)  Но простой поиск в гугле и мой личный опыт показывают, что также широко говорят "статические методы класса", "виртуальные методы класса" и т. д. И по-русски, и по-английски. Дело не в переводчиках. Простой поиск в гугле и ваш личный опыт лишь подтверждают широту заблуждений по этому вопросу. Не надо спорить с автором. Он автор, это его детище, он ввел терминологию, и будьте любезны в рамках ++ ее придерживаться. Во избежание путаницы. То же самое касается и всяких "модулей" (вместо "единиц компиляции"). Еще разок напомню, что "статические методы класса" в С++ - есть нонсенс. Цитата(Oldring @ Apr 26 2007, 18:51)  Хотите узнать "как реально говорят" - лучше не книжки читайте, а поройтесь в поисковиках. О! Вот это новость! Оказывается, книжки уже не авторитет. Очевидно, книжки классиков тоже. Ну-ну. Вместо четкого и ясного определения из первоисточников предлагается копаться в туче ссылок из поисковика, 90% которых в лучшем случае просто частные мнения каких-то неизвестных человеков. И относящихся по большей части не столько к С++, сколько к ООП вообще и другим языкам в частности (Java, C# и т.д.). Ценный совет, ничего не скажешь. Следование ему видно невооруженным взглядом. Цитата(Oldring @ Apr 26 2007, 18:51)  Плюсы, конечно, не Смолток. Переопределять можно не все. Т. е. плюсы занимают промежуточную нишу между процедурными языками и чисто объектно-ориентированными, это компромисс, связанный с совместимостью и производительностью. И что с того, что некоторые методы объекта невозможно переопределить в потомке без специальных усилий? Это всего-лишь деталь реализации этого объекта. Ой, спасибо, просветили меня темного.  Авторитетное мнение авторитетного автора, что тут скажешь. Особенно, учитывая "статические методы" в С++. Цитата(Oldring @ Apr 26 2007, 18:51)  Вы в чисто процедурных языках вообще классы с функциями-членами встречали? Это к чему вообще? Перевести тему в другую плоскость? Знакомо. Не получится. Цитата(Oldring @ Apr 26 2007, 18:51)  P.S. У меня игнор выборочный. О! Это как??? Технически? Насколько знаю - игнор, он и есть игнор, мессаги заигнорированного участника физически не видны. Или вы экстрасенс? Научите такой игнор слабать? Хотя я игнором в принципе не пользуюсь, т.к. считаю это просто прятанием головы в песок, т.е. позицией трусливой и глупой. Но техническая реализация интересна. Цитата(Oldring @ Apr 26 2007, 18:51)  Иногда читаю сообщения, при малейшем сомнении не отвечаю. В споры вступаю по минимуму, когда вижу шанс человека посадить.  Вроде вас со Станиславом и еще узким кругом мне обычно неприятных собеседников. Угу, только в этом топике в лужу-то сели как раз вы. Продемонстрировав незнание элементарных вещей, той же терминологии ЯП С++. И в топике Станислава (про конденсатор) мы тоже все видели, кто в луже. Ждем, когда Станислав продлжит ваше в ней купание.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 26 2007, 17:36
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(dxp @ Apr 26 2007, 17:16)  Естественно, потому что термин "метод" к С++ никакого отношения не имеет. Вот именно. Всякая терминология имеет смысл и пользу, если она вносит ясность, а не путаницу. У Страуструпа все четко и ясно - мухи от котлет отделены: обычные функции-члены от виртуальных (полиморфных), а у вас путаница, все в куче. Простой поиск в гугле и ваш личный опыт лишь подтверждают широту заблуждений по этому вопросу. Не надо спорить с автором. Он автор, это его детище, он ввел терминологию, и будьте любезны в рамках ++ ее придерживаться. Во избежание путаницы. То же самое касается и всяких "модулей" (вместо "единиц компиляции"). Еще разок напомню, что "статические методы класса" в С++ - есть нонсенс. О! Вот это новость! Оказывается, книжки уже не авторитет. Очевидно, книжки классиков тоже. Ну-ну. Вместо четкого и ясного определения из первоисточников предлагается копаться в туче ссылок из поисковика, 90% которых в лучшем случае просто частные мнения каких-то неизвестных человеков. И относящихся по большей части не столько к С++, сколько к ООП вообще и другим языкам в частности (Java, C# и т.д.). Ценный совет, ничего не скажешь. Следование ему видно невооруженным взглядом. Ой, спасибо, просветили меня темного.  Авторитетное мнение авторитетного автора, что тут скажешь. Особенно, учитывая "статические методы" в С++. Это к чему вообще? Перевести тему в другую плоскость? Знакомо. Не получится. О! Это как??? Технически? Насколько знаю - игнор, он и есть игнор, мессаги заигнорированного участника физически не видны. Или вы экстрасенс? Научите такой игнор слабать? Хотя я игнором в принципе не пользуюсь, т.к. считаю это просто прятанием головы в песок, т.е. позицией трусливой и глупой. Но техническая реализация интересна. Угу, только в этом топике в лужу-то сели как раз вы. Продемонстрировав незнание элементарных вещей, той же терминологии ЯП С++. И в топике Станислава (про конденсатор) мы тоже все видели, кто в луже. Ждем, когда Станислав продлжит ваше в ней купание. По поводу игнора - есть кнопка, просмотреть сообщение. Иногда сморю, когда долго не смотрел, или когда ввязался в обсуждение, как сейчас. Большей частью нет. Обычно оказывается, что ничего интересного все равно не было. Да, именно, "как говорят" в книгах не описывают. Думаете, как толковые словари составляются. Если теория опровергает практику - тем хуже для практики
--------------------
Пишите в личку.
|
|
|
|
|
Apr 27 2007, 14:32
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Legotron @ Apr 27 2007, 17:58)  Каков смысл статических функций класса? Зачем их следует использовать? Главный смысл статических функций-членов классов - разгрузить глобальное пространство имен. Т.е., например, требуется какая-то функция, которая должна выполнять работу, не связанную непосредственно с объектами класса, но имеющую отношение к классу и его объектам (в целом). Например, надо проинициализировать что-то, но не в конструкторе класса, а уже внутри main. Например, проициализировать аппаратные регистры какого-то устройства (в ембеддед применениях). Обработчик прерываний тоже характерный пример - нестатическая функция-член класса не может быть обработчиком прерывания. Чтобы не загромождать глобальное пространство имен, такую функцию удобно объявить статической функцией-членом класса, и она будет существовать в scope этого класса. Второе отличие статической функции-члена класса от обычной функции (не члена класса) - статическая функция-член имеет доступ к не-public членам своего класса. Но это свойство для простой функции можно добыть, объявив ее другом (friend) класса. Статическая функция-член живет своей жизнью и ее можно вызывать даже если не создано ни одного объекта класса. Т.е. точно как обычная функция.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|