Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2014, 00:03   #1
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию конструктор С++

Почему не выдает ошибку на строке derived d[2], ведь нет конструктора без параметров? ?

Код:
#include <iostream>
using namespace std;

class base{
int i;
public:
void set_i(int num){i=num;}
int get_i(){return i;}
};

class derived:public base{
int j;
public:
void set_j(int num){j=num;}
int get_j(){return j;}
};

int main(){
base* bp;
derived d[2];

char ch = getchar();
return 0;
}

Вот шилдт пишет:
Код:
class c1{
int i;
public:
cl(int j){i=j;}
int get_i(){return i;}
};
Здесь в классе с1 определен конструктор с одним параметром. Это значит, что любой массив такого типа должен быть инициалзирован.
Таким образом, нельзя объявить массив обычным образом, например
с1[9]; // ошибка

Чтобы решить эту проблему, нужно сделать так:

Код:
class c1{
int i;
public:
c1(){i=0;}//вызывается для неинициализированных массивов
cl(int j){i=j;}
int get_i(){return i;}
};

int main(){
c1 a1[34];//нет ошибки
return 0;
}
zla9_kolu4ka вне форума Ответить с цитированием
Старый 07.03.2014, 00:21   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Если не указано вообще никакого конструктора, то компилятор использует конструктор по умолчанию, т.е. без параметров.

Объявите конструктор, который требует параметр и делает ничего - сразу всплывет ошибка об отсутствии подходящего конструктора.
Smogg вне форума Ответить с цитированием
Старый 07.03.2014, 00:22   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
ведь нет конструктора без параметров? ?
Потому что он есть! Если нет конструкторов определенных программистов, то компилятор генерирует конструктор по умолчанию.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор Freewill Общие вопросы C/C++ 1 18.02.2012 21:51
конструктор _ILYA_ Visual C++ 2 14.10.2010 01:38
С++ (конструктор, деструктор, копирующий конструктор) Jane-sad Помощь студентам 2 01.10.2010 10:01
Конструктор Farrel Общие вопросы C/C++ 1 30.09.2010 01:18
Конструктор PilGrim Общие вопросы C/C++ 0 16.01.2009 10:21