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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimabubyakin
159 / 124 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
#1

Чем отличается Абстрагирование от Наследования? - C++

09.04.2014, 22:04. Просмотров 425. Ответов 4
Метки нет (Все метки)

Много пересмотрел тем таких же на этом форуме, пытался понять абстрагирование, вообщем, можете мне ответить на несколько вопросов:
1) Чем отличается Абстрагирование от Наследования?
2) Что значит Const в этой строке и зачем оно нужно?
C++
1
virtual void Func()const
3) Обязательно использовать указатели?
И вот то как я "понял" абстрагирование, правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <conio.h>
using namespace std;
class ABC
{
public:
    virtual void Show()=0;
};
/***********************/
class A:public ABC
{
public:
    void Show()
    {
        cout<<"A"<<endl;
    }
};
/***********************/
class B:public ABC
{
public:
    void Show()
    {
        cout<<"B"<<endl;
    }
};
/***********************/
main()
{
ABC *a;
a=new A;
a->Show();
a=new B;
a->Show();
getch();
}
Добавлено через 9 минут
И еще по указателям вопрос, какая разница между
C++
1
ClassName* a;
и
C++
1
ClassName *a;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 22:04     Чем отличается Абстрагирование от Наследования?
Посмотрите здесь:

Чем отличается описание от определения - C++
Примеры: int count; int count; Здесь ошибка: переопределение А вот здесь ошибки почему-то нет: extern int...

Чем map отличается от multimap? - C++
если можно пример напишите

Чем отличается override от virtual? - C++
Так и не понял. Если указать метод как override, то он переопределит метод базового класса Для этого метод базового класса должен быть...

Чем отличается оператор цикла - C++
Помогите ответить на вопрос по контрольной: Чем отличается оператор цикла с предусловием от оператора цикла с постусловием?

Чем ссылка отличается от указателя? - C++
чем ссылка отличается от указателя?

Чем отличается istringstream от stringstream? - C++
можете объяснить работу каждого оператора?

Чем отличается <string> и <cstring>? - C++
Добрый день! Подскажите, чем отличается string и cstring, использующиеся в заголовке?

Чем отличается vector<> от set<> а? - C++
Привет всем, у меня токой вопрос, Чем отличается vector&lt;&gt; от set&lt;&gt; а? обое же контеинеры? Примеров кучо, просто разницу не...

Чем отличается fopen от ifstream? - C++
сабж...

C++ от Borland C++ Builder чем отличается? - C++
А с++ от Borland C++ Builder чем отличаются и отличаются ли вообще???

Чем struct отличается от class? - C++
Чем отличаются эти ключевые слова кроме public/private по умолчанию?

Чем отличается компилятор от интерпретатора? - C++
чем отличается компилятор от интерпретатора?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.04.2014, 22:21     Чем отличается Абстрагирование от Наследования? #2
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Что значит Const в этой строке
Что функция-член не изменяет объект this.
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Чем отличается Абстрагирование от Наследования?
агрегирование может быть всё же?
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Обязательно использовать указатели?
Можно и ссылки. Но по-сути, это одно и то же.

Цитата Сообщение от dimabubyakin Посмотреть сообщение
какая разница между
никакой.

Цитата Сообщение от dimabubyakin Посмотреть сообщение
правильно?
не очень. Т.к. нужен ещё виртуальный деструктор в базовом классе. И в коде есть утечка памяти, т.к. вызов
a=new B; затирает адрес ранее выделенной памяти под объект типа A. Освобождения памяти нет еще.
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
09.04.2014, 23:48     Чем отличается Абстрагирование от Наследования? #3
Цитата Сообщение от dimabubyakin Посмотреть сообщение
И вот то как я "понял" абстрагирование, правильно?
То, что ты изобразил, полиморфизм называется.
Ну и по техническим деталям Tulosba прав.
dimabubyakin
159 / 124 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
10.04.2014, 16:37  [ТС]     Чем отличается Абстрагирование от Наследования? #4
Tulosba,
Цитата Сообщение от Tulosba Посмотреть сообщение
Т.к. нужен ещё виртуальный деструктор в базовом классе. И в коде есть утечка памяти, т.к. вызов
a=new B; затирает адрес ранее выделенной памяти под объект типа A. Освобождения памяти нет еще.
как мне это сделать? Освобождение памяти? И про деструктор, что в нем должно быть?
Вот так?
C++
1
virtual ~ABC();
Добавлено через 3 минуты
И как мне сделать абстрагирование, и чего не хватает до полиморфизма?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 17:07     Чем отличается Абстрагирование от Наследования? #5
C++
1
virtual ~ABS() {} // пустое тело
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Освобождение памяти?
Вызвать
C++
1
delete a;
перед присваиванием указателю нового объекта и перед завершением программы.
Ещё хорошо бы при перегрузке виртуальной функции в дочернем классе указывать virtual. А если используйте C++11, то и override еще:
C++
1
2
3
4
5
6
7
8
class A:public ABC
{
public:
    virtual void Show() override
    {
        cout<<"A"<<endl;
    }
};
Yandex
Объявления
10.04.2014, 17:07     Чем отличается Абстрагирование от Наследования?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru