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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отсечение данных при передаче в виде значения 
:(
    Опции темы
mgf
Дата 6.5.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Код

enum breed {golden, cairn, dandie, shetland, doberman, lab}; 
 
class mammal 

public: 
 mammal(){its_age=2; its_weight=5;} 
 ~mammal(){} 
 
  int get_age () const {return its_age;} 
  void set_age (int age) {its_age=age;} 
  int get_weight () const {return its_weight;} 
  void set_weight (int weight) {its_weight=weight;} 
 
  void speak () const {cout<<"mammal sound\n";} 
  void sleep () const {cout<<"mammal sleep\n";} 
protected: 
 int its_age; 
 int its_weight; 
  
}; 
 
class dog: public mammal 

public: 
 dog():its_breed (golden){}; 
 ~dog(){} 
  
  breed get_breed () const {return its_breed;} 
  void set_breed (breed br){its_breed=br;} 
 
  void wag_tail () const {cout<<"tail wadding\n";} 
  void beg_for_food () const {cout << "begging for food\n";} 
private: 
 breed its_breed; 
}; 
 
int main(int argc, char* argv[]) 

 dog fido; 
 fido.speak(); 
 fido.wag_tail(); 
  cout<<"fido is"<<fido.get_age()<<"years old\n"; 
 
 return 0; 
}  

PM MAIL   Вверх
bsa
Дата 6.5.2011, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



mgf, если я правильно тебя понял, то речь идет о потери части информации при копирования объектов классов потомков в объекты базовых классов. Обычно это называется "срезка". Для того, чтобы это увидеть, тебе необходимо:
1. сделать деструктор класса mammal виртуальным (по сути, его надо делать почти всегда, когда планируется наследование)
2. сделать методы speak и sleep тоже виртуальными
3. переопределить классом dog методы speek и sleep.
4. создать две функции, одна принимает объект класса mammal по значению, другая по ссылке. Эти функции должны вызывать методы speek и/или sleep.

Создай объект класса dog и передай его в обе эти функции. Та, что принимает по значению, выведет "mammal sound", а та что по ссылке - вызовет уже метод класса dog. 
PM   Вверх
mgf
Дата 6.5.2011, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ой ой ой.. я думала будет проще, просто совсем недавно начала изучать си
PM MAIL   Вверх
bsa
Дата 6.5.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

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

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

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

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


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

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


 




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


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

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