Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

наследование, конструкторы с++

asdasdasd asdasdasdas Ученик (0), закрыт 4 года назад
class a
{
public:
a()
{
cout << "class a" << endl;
}
};

class b : public a
{
public:
b()
{
cout << "class b" << endl;
}
b(int b)
{
cout << "class b 5" << endl;
}
};

int main()
{
b bb();
}

почему строчка b bb(); не выводит в консоль ничего? (вызывается же конструктор по умолчанию)
а строчка b bb; нормально отрабатывает
Лучший ответ
クマのプーさん Мудрец (15499) 4 года назад
ѣѣ потому что в сраных плюсах разрешили делать декларацию функции где попало
таким образом
b bb();
просто декларация фукнции bb, возвращающей тип b
и ффсё. никакого кода не генерится для этой строчки
Голова РоботаПросветленный (36328) 4 года назад
Даже если бы не разрешили декларировать функции где попало, была бы та же неразбериха с глобальными переменными.

Дополнение к ответу.
Тип можно проверить написав:
cout << "type: " << typeid(bb).name();
Для этого надо подключить
#include <typeinfo>
Формат вывода имени типа зависит от компилятора.
Ещё IDE должна подсказывать типы переменных.
Остальные ответы
InviZzzible Мудрец (10825) 4 года назад
ну так вот. надо просто запомнить и все. для указателя на объект такое будет работать но не для статического объекта.
Похожие вопросы