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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что нужно работодателю? 
:(
    Опции темы
ManiaK
Дата 22.7.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



МДа smile
PM MAIL WWW   Вверх
Mayk
Дата 22.7.2005, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Vyacheslav
Давай еще вопросы smile


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
chaos
Дата 22.7.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



а я бы вообще сделал
Код

#include <iostream.h>
#include <new.h>

int MyHandler(size_t n)
{
    cout << "А нафига ж тебе столько памяти?" << endl;
    return 0;
}

int main(int argc, char* argv[])
{
    _PNH old_handler = _set_new_handler( MyHandler );

    char *s = new char[10000000000];
    
    _set_new_handler(old_handler);
    return 0;
}


smile

Это сообщение отредактировал(а) chaos - 22.7.2005, 10:32
PM WWW   Вверх
Vyacheslav
Дата 22.7.2005, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



По ООП: есть два класса А и B. Нужен третий класс С, обладающий свойствами как одного так и другого. Задачу можно решить используя наследование или агрегацию. На конечный результат не повлияет. Что использовать предпочтительнее и почему?
Добавлено @ 10:38
chaos
Ты поменял МОЙ код, тем самым проявив ко мне неуважение как интервьюеру smile. А я ведь настоятельно просил.

Насчет числа, я конечно зря написал от балды. Просто посчитал, что это несущественно. Лучше было поставить переменную


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
chaos
Дата 22.7.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Цитата(Vyacheslav @ 22.7.2005, 10:33)
Добавлено @ 10:38
chaos
Ты поменял МОЙ код, тем самым проявив ко мне неуважение к интервьюеру smile. А я ведь настоятельно просил.

Насчет числа, я конечно зря написал от балды. Просто посчитал, что это несущественно. Лучше было поставить переменную

извени! это я так просто ради смеху написал smile
PM WWW   Вверх
Mayk
Дата 22.7.2005, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Vyacheslav @ 22.7.2005, 11:33)
По ООП: есть два класса А и B. Нужен третий класс С, обладающий свойствами как одного так и другого. Задачу можно решить используя наследование или агрегацию. На конечный результат не повлияет. Что использовать предпочтительнее и почему?

Не уверен, но кажется наследование. Множественное. Исхожу из расчётов, что так писать короче:
Код

class C: public A, public B{}



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 22.7.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Код


class A {
public:
   func() { cout << "class A" << endl;}
};

class B : public A{
public:
    func() { cout << "class B" << endl;}
};

  A a;

  ((B*)&a)->func();


Результат?

Добавлено @ 10:52
Mayk
При проектировании систем не всегда исходят, из того что короче. Я бы за ответ поставил минус.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
S.A.P.
Дата 22.7.2005, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не понял... Разве Mayk не правильно записал?
PM MAIL   Вверх
Vyacheslav
Дата 22.7.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Код


class A {
public:
  A(){vfunc(); func();}
   virtual vfunc() { cout << "class A" << endl;}
   func() { cout << "class A" << endl;}

};

class B : public A{
public:
   B():A(){ vfunc(); func();}
    vfunc() { cout << "class B" << endl;}
    func() { cout << "class B" << endl;}

};

B b;


Результат?



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Mayk
Дата 22.7.2005, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Vyacheslav @ 22.7.2005, 11:50)

При проектировании систем не всегда исходят, из того что короче. Я бы за ответ поставил минус.

Ладно, потом скажешь правильный ответ?


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
chaos
Дата 22.7.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



а уменя свое мнение:
определяться с выбором нужно исходя из конкретной задачи. на выбор может оказать влияние знание не только имеющейся задачи и ее целей, но и последующих перспектив работы

Это сообщение отредактировал(а) chaos - 22.7.2005, 11:06
PM WWW   Вверх
S.A.P.
Дата 22.7.2005, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Vyacheslav @ 22.7.2005, 10:57)
Результат?

там вроде выйдет
A
A
B
B

да? smile

PM MAIL   Вверх
Vyacheslav
Дата 22.7.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Цитата(Perchilla @ 22.7.2005, 10:56)
Не понял... Разве Mayk не правильно записал?

Если для получения конечного результата можно применить либо наследование, либо агрегацию, то предпочтительнее выбрать агрегацию, хотя это будет более геморойный для кодировщика путь. При проектировании системы нужно исходить из того, что бы взаимосвязь между компонентами системы( сцепление) была как можно слабее. Агрегация является более слабой связью по сравнению с наследованием. Наследование в данном случае надо применять, если требуется, что бы экземпляр класса С мог вести себя и как экземпляр класса А и как класса B( при решении задачи будет использоваться полиморфизм как для А так и для B).
Что самое интересное, если я бы привел конкретный пример, то получил бы правильный ответ: например есть Человек и есть Адрес. Нужен Человек_с_Адресом. Если применить наследование, то задача будет также решена, но в этом случае мы получим скорее ЧеловекоАдрес


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
chaos
Дата 22.7.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



но все же я бы выбрал АГРЕГИРОВАНИЕ, тк я наверное потом если надо могу перейти в наследованию


Добавлено @ 11:12
могу немного повториться или когонить повторить

Если нужно сделать несколько объектов, которые различаются несущественно и имеют массу общего, то хорошим выбором может быть использование агрегирования свойств и изменения необходимых функций с учетом их состояния. Если архитектура программы по своему строению использует массу объектов, которые видны этой архитектуре совершенно безотносительно свойств, которыми они различаются, и методы, которыми эти объекты различаются, существенны, то скорее всего следует выбрать путь наследования.
PM WWW   Вверх
Vyacheslav
Дата 22.7.2005, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Код

class A {

  int a;
  int b;
  int c;
public:
  A(): c(5), b(c + 1) , a(c+b) { cout << a << endl << b << c << endl;  }
};
A a;

Результат?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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