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

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

Войти
Регистрация
Восстановить пароль
 
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
#1

Использование конструктора базового класса при динамическом выделении памяти - C++

22.11.2013, 19:54. Просмотров 463. Ответов 7
Метки нет (Все метки)

Есть базовый класс, от него наследуются несколько классов, свой конструктор я определил в базовом классе. Далее нужно сделать так:
C++
1
parent *p=new child1;
Вызывается непонятно какой конструктор базового класса при создании безымянного объекта производного класса. Т.е. я предполагал сделать как то так
C++
1
parent *p=new child1(a,b,c,d);
Тогда какой выход? Присваивать значения атрибутам уже не через конструктор?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 19:54     Использование конструктора базового класса при динамическом выделении памяти
Посмотрите здесь:

Использование конструктора базового класса наследником - C++
Доброго дня, коллеги! Решал одну задачку и столкнулся с проблемой. По условию дан класс String, моделирующий работу типа данных string....

Ошибка при динамическом выделении памяти - C++
Я не понимаю почему, но почему-то пример по динамическому выделению памяти, взятый с этой веб-страницы: http://cppstudio.com/post/9555/...

Ошибка при динамическом выделении памяти - C++
почему у меня возникет ошибка вот тут struct TOVAR *New = new struct TOVAR; пишит недопустимый неполный тип на struct подчеркивает...

Создание исключения при динамическом выделении памяти - C++
Вот код из учебника в нем мне все понятно. #include<iostream> #include<cstdlib> //exit() #include<new> using std::cout;using...

Выравнивание при динамическом выделении памяти под массив - C++
Добрый вечер. Для того, чтобы выделить память под массив динамически и выровнять указатель по 16 байтам, в разных ОС существуют разные...

Cin.getline() не работает при динамическом выделении памяти - C++
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все нормально. #include <iostream> using...

Вопрос о динамическом выделении памяти - C++
Доброго времени суток всем. у меня вопрос к работе следующего кода: delete values; // Удаляем массив из кучи ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
22.11.2013, 20:00     Использование конструктора базового класса при динамическом выделении памяти #2
Цитата Сообщение от ivan92 Посмотреть сообщение
непонятно какой конструктор
Всмысле? Вызывается конструктор, который не принимает параметров
C++
1
child1::child1()
И можно целиком глянуть на .h?

Добавлено через 4 минуты
Точнее как... Сперва вызывается конструктор parent, потом child1
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
22.11.2013, 20:03  [ТС]     Использование конструктора базового класса при динамическом выделении памяти #3
MastAKK, это понятно. Еще забыл кое что написать. Можно же для каждого наследника определить свой конструктор, хотя они будут идентичны, так что это тоже не очень хорошо.
Сначала же вызывается конструктор базового класса? Он у меня есть. Вот я бы хотел, чтобы вызывался при создании наследника не конструктор по умолчанию, а конструктор определенный мной. Можно так сделать?
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
22.11.2013, 20:10     Использование конструктора базового класса при динамическом выделении памяти #4
ivan92,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A{
protected:
    int a;
public:
    A(int _a) {
        a = _a;
    }
};
class B: public A {
private:
    int b;
public:
    B(int _a, int _b) : A(_a),b(_b) {};
};
 
int main()
{
    B my(2,3);  
    return 0;
}
LuxArt
33 / 20 / 2
Регистрация: 14.11.2013
Сообщений: 85
22.11.2013, 20:11     Использование конструктора базового класса при динамическом выделении памяти #5
Цитата Сообщение от ivan92 Посмотреть сообщение
Вот я бы хотел, чтобы вызывался при создании наследника не конструктор по умолчанию, а конструктор определенный мной. Можно так сделать?
Можно. Таким способом вызывается конструктор базового класса из производного:

C++
1
2
3
4
5
child::child(...)
    : base(...)     // <--- Вызов конструктора базового класса
{
 
}
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
22.11.2013, 21:11  [ТС]     Использование конструктора базового класса при динамическом выделении памяти #6
LuxArt, вот так вот? Visual studio ругается.
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
class client{
protected:
  char name[50];
 
  int bMonth, bDay, bYear,
               eMonth, eDay, eYear;
  int amount, cost;
  int id;
public:
  client::client(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid);
  virtual void fAmount()=0;
  void printName(){cout<<name;};
  void printId(){cout<<id;};
  void printAmount(){cout<<amount;};
  void printCost(){cout<<cost;};
  void printPeriod(){cout<<bDay<<'.'<<bMonth<<'.'<<bYear<<'-'<<eDay<<'.'<<eMonth<<'.'<<eYear;};
  void printFromFile();
};
 
 
 
class adult : public client{
public:
  adult():client(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid)
  void fAmount(){amount=cost*5;};
};
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
22.11.2013, 21:22     Использование конструктора базового класса при динамическом выделении памяти #7
ivan92,
C++
1
    adult(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid):client( fbMonth,  fbDay,  fbYear, feMonth, feDay,feYear,  fcost,  fid){};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 21:28     Использование конструктора базового класса при динамическом выделении памяти
Еще ссылки по теме:

Ошибка на динамическом выделении памяти - C++
программа ниже безупречно выполнялась под С++Builder 6.0 (консольное приложение). При переводе ее в VC6.0 (кроме сделанных исправлений -...

Немного о динамическом выделении памяти ... - C++
объявление данных в классе: class Employee {.......... private: char *firstName; char *lasrName; }

Вопрос о динамическом выделении памяти для строки - C++
Как можно реализовать динамическое выделение для строки, т.е. например у меян есть указатель - char *c. Мне необходимо ввести строку с...

Инициализация конструктора базового класса - C++
class animal { public: animal(int a):ianimal(a){} protected: int ianimal; }; class bird:public animal

Наследование конструктора из базового класса - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; //////////////////// class String { ...


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

Или воспользуйтесь поиском по форуму:
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
22.11.2013, 21:28  [ТС]     Использование конструктора базового класса при динамическом выделении памяти #8
LuxArt, scenotaph, спасибо огромное, разобрался)
Yandex
Объявления
22.11.2013, 21:28     Использование конструктора базового класса при динамическом выделении памяти
Ответ Создать тему
Опции темы

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