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

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

Войти
Регистрация
Восстановить пароль
 
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
#1

Абстрактные классы - C++

16.12.2012, 22:53. Просмотров 422. Ответов 8
Метки нет (Все метки)

Народ, вопрос есть такой.
Есть абстрактный класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
protected:
int a;
public:
A(int b=0):a(b)
{
}
virtual ~A()=0;
};
A::~A()
{
}
Есть производный класс от него
C++
1
2
3
4
5
6
7
8
9
class B:public A
{
protected:
int c;
public:
B(int f=0):c(f)
{
}
};
А теперь вопрос. Как мне вызвать конструктор класса А при создание объекта класса B с явными параметрами, а не по умолчанию. Если явно вызываю пишет что создать экземпляр абстрактного класса невозможно.
Надеюсь вопрос понят.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 22:53     Абстрактные классы
Посмотрите здесь:

Абстрактные классы - C++
Ребята! Помогите с таким делом. Мне дали задание создать абстрактный класс Автомобиль, классы наследники: гоночный автомобиль, асфальтный...

Абстрактные классы - C++
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the...

Абстрактные классы - C++
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc...

Абстрактные базовые классы - C++
Не могу создать экземпляр производного от АБК класса: #pragma once class BaseEllips { private: double x; double y; public: ...

Абстрактные классы. Интерфейсы - C++
Помогите пожалуйста!!! Лабораторная работа по ООП. Тема: Абстрактные классы. Интерфейсы. Цель: получить навыки создания иерархии...

Абстрактные классы. Наследование - C++
Здравствуйте! Препод дал задание на наследование и абстрактные классы. Кому не трудно, посмотрите, пожалуйста код, правильно ли я делаю? ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.12.2012, 22:55     Абстрактные классы #2
зачем вызывать конструктор класса А если он абстрактный?
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
16.12.2012, 22:58  [ТС]     Абстрактные классы #3
Там есть поля, которые наследуваются классом B( ну это актуально когда много классов с одинаковыми полями), и им надо присвоить определённое значение.

Добавлено через 1 минуту
Ну когда создаётся объект класса B,в начале вызывается конструктор класса A, вот как вызвать конструктор с определёнными параметрами?
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.12.2012, 23:00     Абстрактные классы #4
инициализировать те поля не конструктором а каким либо методом , и вызывать этот метод в потомке , как выход?
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
16.12.2012, 23:03  [ТС]     Абстрактные классы #5
Это-то понятно)) Хотелось поизящней так сказать одним методом) Ладно спасибо.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.12.2012, 23:04     Абстрактные классы #6
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
37
#include <iostream>
 
class Abstract 
{
public:
   Abstract(const int&)
   {
      std::cout << "Constr Abstruct Class" << std::endl;
   }  
   virtual void AbstrFun();
   ~Abstract()
   {
      
   }
};
 
class Derived : public Abstract
{
public:
   Derived() : Abstract(5)
   {
      
   }
   void AbstrFun()
   {
      
   }
   ~Derived()
   {
      
   }
};
 
int main()
{
   Derived object;
}
http://liveworkspace.org/code/sIfya$0

Добавлено через 23 секунды
Цитата Сообщение от Nixy Посмотреть сообщение
зачем вызывать конструктор класса А если он абстрактный?
Как это зачем?
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.12.2012, 23:05     Абстрактные классы #7
go, так у вас не абстрактный класс, а класс с виртуальной функцией ,разные вещи, хотя ваш способ работает
C++
1
2
3
4
5
6
7
8
class B:public A
{
protected:
int c;
public:
B(int f=0):A(f),c(f)
{
}
век живи век учись!
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
16.12.2012, 23:11  [ТС]     Абстрактные классы #8
ОО, спасибо, про список инициализации недодумался!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 23:19     Абстрактные классы
Еще ссылки по теме:

абстрактные классы ошибка - C++
Здравствуйте. Помогите пожалуйста найти ошибку в программе с абстрактным классом. #include &quot;stdafx.h&quot;; int _tmain(int argc, _TCHAR*...

Абстрактные и производные классы - C++
Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа сигнал, данные типа результат обработки и...

Наследование, абстрактные классы. - C++
Собственно нужно создать абстрактный базовый класс Shape, от него наследовать абстрактные классы Shape2D и Shape3D. От них конкретные...

Абстрактные классы наследия. - C++
Ребят подскажите пожалуйста как мне написать чтобы в классе С виртуальные функции класса B заменялись функциями класса А. можно ли так...


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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.12.2012, 23:19     Абстрактные классы #9
Nixy, прошу прощения. Поспешил
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
37
#include <iostream>
 
class Abstract 
{
public:
   Abstract(const int&)
   {
      std::cout << "Constr Abstruct Class" << std::endl;
   }  
   virtual void AbstrFun() = 0;
   virtual ~Abstract()
   {
      
   }
};
 
class Derived : public Abstract
{
public:
   Derived() : Abstract(5)
   {
      
   }
   void AbstrFun()
   {
      
   }
   ~Derived()
   {
      
   }
};
 
int main()
{
   Derived object;
}
http://liveworkspace.org/code/2v7Sm0

Nixy, спасибо.

Добавлено через 12 секунд
Так даже лучше.
Yandex
Объявления
16.12.2012, 23:19     Абстрактные классы
Ответ Создать тему
Опции темы

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