Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ключевое слово interface, Два вопроса 
V
    Опции темы
EvilsInterrupt
Дата 30.3.2009, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Есть, допустим такой интерфейс:

interface I_Integer
{
  int GetInt();
  void SetInt
};

Пример надуман, привожу его чтобы не описывать свой здоровый интерфейс )

Вопросы:
1. Обазательно ли методы интерфейса объявлять virtual-льными или они по дефолту уже виртуальные ?
2. В классе порожденного от этого интерфейса методы уже по дефолту будут виртуальными или их явно  надо задавать как virtual ?

3. Если есть есть класс, который порожден от этого интерфейса и есть функция написанная в процедурном стиле, но ! Создающая объект этого класса в указатель на этот интерфейс, т.е. это своего рода фабрика , то как убивать этот объект ?

bool CreateObj(I_Integer * int_obj);

/* много кода дальше и : */
I_Integer * obj_int;
if (!CreateObj(&obj_int) )
  std::cout << "Error\n";

Вопрос появился по тому что от интерфейса может быть порождено несколько классов и потому может быть аналогичных CreateObj несколько вариантов ! Потому будет ли достаточно :

delete obj_int;
obj_int = 0;

?
PM MAIL WWW ICQ Jabber   Вверх
mrbrooks
Дата 30.3.2009, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



EvilsInterrupt, камрад в С/С++ нет интерфейсов. Есть аналог - абстрактный или полиморфный класс. А то что ты делаешь, как я понимаю, тянет с собой .NET. К С/С++ это имеет очень отдаленное отношение.
PM MAIL   Вверх
EvilsInterrupt
Дата 30.3.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



все, по этой теме вроде исчерпаны, Lazin проснулся и просвятил меня по аське. )))

Решение:
1. заместо ключевого interface поставил class
2. все методы сделал чистыми вирт. ф-циями
3. сделал также чистоой виртуальной ф-цией и ДЕСТРУКТОР !
4. сделал реализацию этого деструктора !!! - это особенно важно для меня
PM MAIL WWW ICQ Jabber   Вверх
vinter
Дата 30.3.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Цитата(EvilsInterrupt @  30.3.2009,  09:11 Найти цитируемый пост)
3. сделал также чистоой виртуальной ф-цией и ДЕСТРУКТОР !

совершенно бесполезное действие


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 30.3.2009, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(vinter @  30.3.2009,  09:08 Найти цитируемый пост)
совершенно бесполезное действие 

не совсем.. щас до компиляции дойдет и компилятор заартачится (чувствую что тело он не определил) - будет у автора дополнительный опыт smile



Это сообщение отредактировал(а) mes - 30.3.2009, 10:56


--------------------
PM MAIL WWW   Вверх
Andrey44
Дата 30.3.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Цитата(mrbrooks @  30.3.2009,  07:53 Найти цитируемый пост)
EvilsInterrupt, камрад в С/С++ нет интерфейсов.

Код

interface __declspec(uuid("{7DB0AD35-EC78-4a42-B630-771B7632926C}")) ITratata : public IUnknown
{

};

a
Код

#define interface               struct




--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
mrbrooks
Дата 30.3.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Andrey44, вот если бы он так написал - тогда другое дело. 
Смысла честно говоря я в этом не вижу. Букв и то больше писать.

Кстати помню один чел так заменил {, } на begin и end. 
PM MAIL   Вверх
Andrey44
Дата 30.3.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Цитата(mrbrooks @  30.3.2009,  11:06 Найти цитируемый пост)
Кстати помню один чел так заменил {, } на begin и end

 smile ну в этом уж точно смысла нет.
А interface просто для удобства. Читаешь и сразу видишь, ага interface - значит это интерфейс smile 
Конечно смысла нет если простую структуру обзывать interface 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Lazin
Дата 30.3.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(mes @  30.3.2009,  10:54 Найти цитируемый пост)
не совсем.. щас до компиляции дойдет и компилятор заартачится (чувствую что тело он не определил) - будет у автора дополнительный опыт

нее
Цитата(EvilsInterrupt @  30.3.2009,  08:11 Найти цитируемый пост)
4. сделал реализацию этого деструктора !!! 

не будет)
Цитата(vinter @  30.3.2009,  10:08 Найти цитируемый пост)
совершенно бесполезное действие

как минимум один плюс есть - заставить реализовать деструктор у класса потомка smile 
PM MAIL Skype GTalk   Вверх
bsa
Дата 30.3.2009, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Lazin @ 30.3.2009,  11:30)
Цитата(vinter @  30.3.2009,  10:08 Найти цитируемый пост)
совершенно бесполезное действие

как минимум один плюс есть - заставить реализовать деструктор у класса потомка smile

А зачем? Это довольно редко, когда бывает действительно нужно.
PM   Вверх
mes
Дата 30.3.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Lazin @  30.3.2009,  10:30 Найти цитируемый пост)
как минимум один плюс есть - заставить реализовать деструктор у класса потомка smile  

а нельзя ли (компилируемый) пример такого класса , который заставляет реализовывать деструктор у наследника ?  smile 

Это сообщение отредактировал(а) mes - 30.3.2009, 21:32


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.