Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

09.04.2014, 22:04. Просмотров 458. Ответов 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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 22:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чем отличается Абстрагирование от Наследования? (C++):

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций? - C++
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с маленькой просьбой. Я никак не могу...

Чем отличается this от *this? - C++
Привет всем ! вот код template&lt;typename Key, typename Value&gt; Dictionary&lt;Key, Value&gt;&amp; Dictionary&lt;Key, Value&gt;::operator =(const...

Чем отличается if от (?:) - C++
Здравствуйте. Почитываю С++, сам программирую в Делфи. Вот немного запутался. В делфи есть условный оператор if, тогда как в С++ есть такой...

Чем C++ отличается от C++ Builder? - C++
Чем C++ отличается от C++ Builder? И если имеется желание писать именно в C++, а не в билдере, то что для этого ещё надо освоить и каким...

Чем отличается С++ от Visual С++? - C++
Здравствуете товарищи программисты! Только начал изучать язык программирования С++ и возникло пару вопросов. Чем отличается С++ от Visual...

Чем new отличается от malloc? - C++
Чем new отличается от malloc?

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

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

Цитата Сообщение от dimabubyakin Посмотреть сообщение
правильно?
не очень. Т.к. нужен ещё виртуальный деструктор в базовом классе. И в коде есть утечка памяти, т.к. вызов
a=new B; затирает адрес ранее выделенной памяти под объект типа A. Освобождения памяти нет еще.
1
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
09.04.2014, 23:48 #3
Цитата Сообщение от dimabubyakin Посмотреть сообщение
И вот то как я "понял" абстрагирование, правильно?
То, что ты изобразил, полиморфизм называется.
Ну и по техническим деталям Tulosba прав.
1
dimabubyakin
159 / 120 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
10.04.2014, 16:37  [ТС] #4
Tulosba,
Цитата Сообщение от Tulosba Посмотреть сообщение
Т.к. нужен ещё виртуальный деструктор в базовом классе. И в коде есть утечка памяти, т.к. вызов
a=new B; затирает адрес ранее выделенной памяти под объект типа A. Освобождения памяти нет еще.
как мне это сделать? Освобождение памяти? И про деструктор, что в нем должно быть?
Вот так?
C++
1
virtual ~ABC();
Добавлено через 3 минуты
И как мне сделать абстрагирование, и чего не хватает до полиморфизма?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 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;
    }
};
0
10.04.2014, 17:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 17:07
Привет! Вот еще темы с ответами:

Чем отличается ln , lg, и log ? - C++
и как реализуются эти функцию в c++

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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