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

виртуальные функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Классы и работу с ними http://www.cyberforum.ru/cpp-beginners/thread1037213.html
Делаю лабы и сдаю. Но увы не понимаю всего потому вопрос. Допустим есть некий класс Base и его наследник Production. Класс Base описывает некий объект (характеристики объекта) и функции доступа к ним. Класс Production описывает функции для работы с Base. class Base { private: int characteristic_one; int characteristic_two; int characteristic_three; public: int get_one(int n) {
C++ Разложить N камней на M Куч Всем доброго времени суток! Возникла проблема с решением одной задачи - необходимо разложить N камней на M куч таким образом, чтобы минимизировать вес самой тяжелой кучи. Можете подсказать хотя бы в каком направлении идти? http://www.cyberforum.ru/cpp-beginners/thread1037205.html
C++ Обработка исключений
Ребят, всем привет) помогите разобраться с вроде как простой задачкой, но весьма затруднительной для меня) По исключениям инфы мало в Сети, если она есть - то она одинаковая везде и во-многом не ясна. Задание вот какое: Функция, реализуемая в задании, обязана выполнять проверку передаваемых параметров и генерировать подходящее исключение в случае ошибочных. Функция реализуется в двух...
C++ Из float в string
Как из переменной типа флоат записать число в string? float x = -123.56; string Str; Нужно чтобы Str стало равно "-123.56"
C++ Программа с двусвязным списком крашится http://www.cyberforum.ru/cpp-beginners/thread1037171.html
Здравствуйте! написал код для двусвязного списка, проблема следующая: все компилируется, запускается интерфейс, но какую бы функцию я не вызывал - окно вылетает ("прекращена работа...") подскажите пожалуйста, с чем это может быть связано? заранее большое спасибо! #include <iostream> #include "stdlib.h" #include <fstream>
C++ Преобразование типа Есть числа типов int и double. Их надо преобразовать в тип char, чтобы записать их в поток(файл *.bin). И какая функция соединяет строки? Например stroka1+stroka2+...+strokaN в вид одна большая STROKA, а не массив строк. подробнее

Показать сообщение отдельно
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
11.12.2013, 16:30     виртуальные функции
Не могу перегрузить функцию
Есть понятие перегрузка и переопределение.
Вы переопределяете(затеняете) функцию базового класса новой функцией.
Пример
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
38
39
40
41
42
#include <iostream>
 
class Bass
{
    public:
        virtual int fun(int K)
        {
            x=1+K;
            return x;
        }
    private: int x;
};
 
class Bass2:public Bass
{
    public:
        int fun(int K)//перегруженная базового класса
        {
            x=1+K+100;
            return x;
        }
        
         int fun(int K, int T)//обьявленная новая с таким же именем но другими параметрами
        {
            x=1+K+T;
            return x;
        }
    private: int x;
};
 
 int main()
 {
    Bass b1;
    Bass2 b2;
    
    std::cout << b1.fun(5) << std::endl;//виртуальная ф-я базовый класс
    std::cout << b2.fun(10) << std::endl;//перегруженная функция базового класса 
    std::cout << b2.fun(10,5) << std::endl;//тоже имя ф-ии но другой набор параметров
    
     system("PAUSE");
     return 0;
 }
Добавлено через 2 минуты
Точнее я неправильно сказал вы не затеняеете а просто не реализуете

Добавлено через 54 секунды
Слово virtual не гарантирует того что обязательно нужно перегрузить функцию в классе наследнике.

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