Форум программистов, компьютерный форум CyberForum.ru

В чем заключается наследование одного класса другому? - C++

Восстановить пароль Регистрация
 
ardos
-133 / 7 / 0
Регистрация: 24.02.2013
Сообщений: 234
31.05.2013, 09:31     В чем заключается наследование одного класса другому? #1
Вообщем есть пара заданий теория ,можек кто-нибудь помочь и ответить на них

1. В чем заключается наследование одного класса другому? В чем разница в организации
наследования полей и методов?
1. Определены 2 класса:
C++
1
2
3
сlass Based{public: int x;};
сlass Derived :public Based{};
/***********/
Какое значение выводится на консоль?
C++
1
2
3
4
5
Based b1;
b1.x=3;
Derived d1;
d1.x=4;
cout<<b1.x;
2. Удачной ли является иерархия классов, при которой некоторый класс Х является производным от большого количества классов с большим числом полей в каждом ( A<-B <- C <- X)? Какая существует альтернатива наследованию?
3. Каким образом производится управление доступом к унаследованным компонентам производных классов? Есть ли в представленном фрагменте программы ошибки?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Base {
int y;
       public:
void setx(int n){x=n;}
void showx() const{ cout <<x<<endl;}
};
class Derived: public Base {
int x;
public:
void sety(int n){y=n;}
void show_sum() const{ cout<<x+y<<endl; }
void show() const {cout<<y<<endl; }
};
4. Есть ли ошибки в нижеследующих объявлениях:
C++
1
2
3
Shape sh;   // класс Shape абстрактный 
Shape *psh;
Shape *psh1=new Shape();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
31.05.2013, 09:38     В чем заключается наследование одного класса другому? #2
Цитата Сообщение от ardos Посмотреть сообщение
1. В чем заключается наследование одного класса другому? В чем разница в организации
наследования полей и методов?
наследование является мощным механизмом уменьшения количества кода, класс наследник наследует все методы и данные определенные в базовом классе, говоря простым языком - код базового класса дублируется для класса наследника и при определенных модификаторах наследования можно, либо нельзя обращаться к наследуемому телу базового класса
zer0mail
2188 / 1871 / 187
Регистрация: 03.07.2012
Сообщений: 6,661
Записей в блоге: 1
31.05.2013, 09:38     В чем заключается наследование одного класса другому? #3
Простенькие задания надо самому делать. Или ленивенький?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
31.05.2013, 09:46     В чем заключается наследование одного класса другому? #4
Цитата Сообщение от ardos Посмотреть сообщение
1. Определены 2 класса:
сlass Based{public: int x;};
сlass Derived ublic Based{};
/***********/
Какое значение выводится на консоль?
Based b1;
b1.x=3;
Derived d1;
d1.x=4;
cout<<b1.x;
так как по умолчанию в классе идентификатор доступа к полям является private, то будет ошибка компиляции - доступ к приват данному класса Based

Добавлено через 1 минуту
Цитата Сообщение от ardos Посмотреть сообщение
4. Есть ли ошибки в нижеследующих объявлениях:
Shape sh; // класс Shape абстрактный
Shape *psh;
Shape *psh1=new Shape();
можно создавать указатель или ссылку на абстрактный класс, но не объект абстрактного класса

Добавлено через 4 минуты
Цитата Сообщение от ardos Посмотреть сообщение
3. Каким образом производится управление доступом к унаследованным компонентам производных классов? Есть ли в представленном фрагменте программы ошибки?
class Base {
int y;
public:
void setx(int n){x=n;}
void showx() const{ cout <<x<<endl;}
};

class Derived: public Base {
int x;
public:
void sety(int n){y=n;}
void show_sum() const{ cout<<x+y<<endl; }
void show() const {cout<<y<<endl; }
};
приват поля базового класса не видны в производном классе, в любом случае
протектед и паблик поля видны в производных классах
Yandex
Объявления
31.05.2013, 09:46     В чем заключается наследование одного класса другому?
Ответ Создать тему
Опции темы

Текущее время: 06:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru