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

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

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

Полиморфизм для структур - C++

21.09.2013, 01:00. Просмотров 386. Ответов 5
Метки нет (Все метки)

Доброго времени суток! Помогите разобраться, я понимаю что должен быть создан экземпляр функции Bart::func() при вызове через указатель на базовый абстрактный класс но не пойму почему st=50, а не 999
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct Foot
{
    virtual size_t func(size_t st = 50) const = 0;
};
struct Bart : Foot
{
    virtual size_t func(size_t st = 999) const
    {
        return st;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Foot const &ptr = Bart();
    std::cout << ptr.func() << std::endl;
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 01:00     Полиморфизм для структур
Посмотрите здесь:

Полиморфизм. Для чего нужны аргументы базового класса в наследуемом классе? - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Goods { protected: int width; int height; double...

Организация контейнера для структур - C++
Доброго времени суток! Решая задачу по реализации контейнера столкнулся с проблемой выделения памяти для новых элементов. Первый...

Qsort для массива структур - C++
Да, знаю, что таких тем на форуме уже полно, как и кода, но смысл мне всё равно непонятен. Есть массив таких рёбер: struct edge{ int...

Динамические массивы для структур данных - C++
Помогите решить задачу хотя бы в общих чертах. Я пишу на С++ в Visual Studio 2010. В библиотеке для каждого заказывающего книгу...

Использование слова extern для структур - C++
В одном из файлов проекта задана структура: struct TMsgTV { int X,Y; char *Msg; } Далее была объявлена...

Память для динамического массива структур - C++
Есть функция Insert, в которой я даю параметрами старый массив объектов структуры, его размер и новый объект, которым надо дополнить...

Функция qsort для сортировки массивов структур - C++
В общем есть структура struct User { int id; char nickname; int karma; };

Функция для обмена элементов в массиве структур - C++
Пытаясь написать функцию сортировки массива из структур столкнулся с проблемой. Вот вид функции для обмена элементов: void swap...

Линейный, однонаправленный, связанный список для структур - C++
Всем привет! Помогите пожалуйста переделать эту программу, так чтобы в нем использовались не массивы структурных переменных, а линейный,...

Почему в С++ используются сложные имена для структур? - C++
Их читать сложно. BITMAPFILEHEADER LPBITMAPFILEHEADER PBITMAPFILEHEADER FONTSIGNATURE PFONTSIGNATURE LPFONTSIGNATURE


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2013, 01:03     Полиморфизм для структур #2
Цитата Сообщение от ArkTaS Посмотреть сообщение
но не пойму почему st=50, а не 999
потому что это очередной косяк дизайна с++.
использование параметров по умолчаю в виртуальных функциях - это плохо, так и запишите.
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
21.09.2013, 01:23  [ТС]     Полиморфизм для структур #3
Jupiter, Да так то получается весь язык в косяках, сам автор языка пишет в рецензии на 4 издание книги "Программирование С++" он в курсе что язык паршивый (
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 01:29     Полиморфизм для структур #4
Нет. Виртуальные методы могут иметь значения по-умолчанию. Значения по-умолчанию в базовом классе не наследуются. 8.3.6.10
Это не косяк а стандарт. И чисто-виртуальные методы тут не при чем.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
struct Foot
{
    virtual void func(size_t st = 50) {
        std::cout << "Foot::func: " << st << std::endl;
    }
};
 
struct Bart : Foot
{
    virtual void func(size_t st = 999) {
        std::cout << "Bart::func: " << st << std::endl;
    }
};
 
int main()
{
    Foot *p = new Bart;
    p->func();
    return 0;
}
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2013, 01:30     Полиморфизм для структур #5
Цитата Сообщение от ArkTaS Посмотреть сообщение
Да так то получается весь язык в косяках, сам автор языка пишет в рецензии на 4 издание книги "Программирование С++" он в курсе что язык паршивый (
на то есть книги Маерса, Саттера и прочих гуру, да и ещё есть coding standards типа JSF и MISRA
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
21.09.2013, 01:43     Полиморфизм для структур #6
Параметры по умолчанию связываются статически во время компиляции, а не определяются во время выполнения.
Yandex
Объявления
21.09.2013, 01:43     Полиморфизм для структур
Ответ Создать тему
Опции темы

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