Помогите ответить на вопрос по C++

olha210

В чем разница между ключевыми словами class и interface?
Варианты ответов:
1.С помощью ключевого слова class определяют классы, ключевым словом interface обозначают совокупность членов доступных для использования за пределами класса.
2.Ключевым словом interface описывается шаблон, которому должны соответствовать члены класса, определенные с помощью ключевого слова class. Шаблон, объявленный как interface, может быть использован для нескольких различных классов.
3.С помощью ключевого слова class, и с помощью interface определяются классы. Разница в том, что от классов, определенных как интерфейсы, не может осуществляться наследование.
Где можно почитать про ключевое слово interface?

sbs-66

Боюсь показаться тёмным, но в C++ нет ключевого слова interface. По крайней мере я всю жизнь считал, что оно определено через макрос как синоним слова class.
Реально же оно означает, то же, что и класс, но при этом предполагается, что клас будет абстрактным, т.е. все методы у него виртуальные функции, которые должны быть реализованы в наследниках. Из всех вариантов подходит только 1й.

maggi14

вынужден огорчить, но ключевого слова interface в C++ нет
используй вместо него слово class
Термин "интерфейс" пришел из других языков и технологий (подозреваю, из технологии COM). При реализации таких технологий в C++, достаточно использовать слово class и помнить об ограничениях.
В некотором смысле, верны ответы 2 и 3, но только в очень некотором

alexkravchuk

Второе.
В C++ нет такой потребности в интерфейсах, как в Яве, так как существует множественное наследование. Интерфейс - это тот же класс, но состоящий исключительно из чистых виртуальных функций, то есть функций, которые необходимо реализовать в классе, который наследует этот интерфейс. Ищи по ключевым словам "виртуальная функция" и "чистая виртуальная функция", если тебе именно по C++ нужно - больше наёдёшь.

maggi14

да, про 3е я ступил. Не так прочитал вопрос.

enochka1145

Где можно почитать про ключевое слово interface?
В MSDN. __interface (Microsoft specific кажется.

olha210

Из всех вариантов подходит только 1й.

В некотором смысле, верны ответы 2 и 3, но только в очень некотором

?

maggi14

3ий - неверный, я ошибся
я бы голосовал за 2ой. Впрочем, не целиком.

sbs-66

Меня смущает слово шаблон. интерфейс к шаблонам в смысле С++ никакого отношения не имеет. Разве что слово "шаблон" используется в житейском смысле.

sbs-66

Ни один из вариантов не является полностью верным. В С++ есть понятие шаблона (template но к interface он никакого отношения не имеет, потому я и решил, что второй пункт не подходит.
Вообще, слово interface используется ещё при описании COM-объектов, но это уже не C++.
В общем, я тоже теперь склоняюсь к пункту 2.

olha210

Да, кстати, похоже речь идет не просто о C++, а о Visual C++

alexkravchuk

Я уверен, что подразумевался житейский смысл. Впрочем согласен, что тест просто дурно составлен.

sbs-66

Если вопрос про саму среду разработки, а не про конкретный язык, то может быть верным и первый пункт. Но как-то оно расплывчато очень всё. Тут, видимо, надо по контексту решать, посмотреть на стиль других вопросов.

olha210

В чем разница между override и virtual?
1. Модификатор virtual объявляет метод класса как перекрываемый и обеспечивает корректное связывание методов в производных классах. Модификатор override предназначен для перекрытия виртуальных методов базовых классов.
2. Методы класса, помеченные с помощью ключевого слова virtual, только описываются в классе, и могут быть реализованы в производных классах. Ключевое слово override используется для реализации виртуальных методов базовых классов.
3. Методы класса, помеченные с помощью модификатора override, могут быть перекрыты в производных классах. Методы с модификатором virtual в производных классах не перекрываются.

olha210

Да, кстати, похоже речь идет не просто о C++, а о Visual C++
Я ступил. Эти вопросы про Visual Studio.

enochka1145

Так ты уже прочитал про ключевое слово __interface?

sbs-66

1

olegusmaximus

Тогда ето скорее всего вопросы по С#. Ответы по моему 1->2 и 2->1

erotic

override есть в стандарте?

sbs-66

Не помню...

Ivan8209

Стандарт настолько велик, что нельзя упомнить, что в него включено?
Он недоступен для чтения и, вдобавок, в нём отсутствует предметный указатель.
---
...Я работаю антинаучным аферистом...

sbs-66

не еби мне мозг. кому надо - посмотрит, а мне лень.

Ivan8209

Да и вообще непонятно, почему все насильники бросились толковать "по понятиям",
если есть стандарт, на который можно привести ссылку, указав даже абзац(ы).
Или нет этого стандарта?
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: