Форум программистов, компьютерный форум, киберфорум
Наши страницы

Вопрос по наследованию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверьте задачу правильно решена ли http://www.cyberforum.ru/cpp-beginners/thread380545.html
Вопрос Определить минимальный и максимальный элементы, вычислить их разность. Задача моя #include <stdafx.h> #include <iostream> #include <math.h> int main () { setlocale(0,"Rus"); int...
C++ Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... Здравствуйте, форумчане! У меня вот такая вот задачка: Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух... http://www.cyberforum.ru/cpp-beginners/thread380518.html
C++ предлагаю людям класс "каждому потоку- своё окно" для тестирования многопоточных приложений.
Друзья! То есть если вы разрабатывает многопоточные приложения и закалебались смотреть, что тот или иной поток выводит, то этот класс для вас. Использовать его просто. Подключаете хидер и пишете:...
C++ Центр графа
Дана матрица смежности. Найти максимальное расстояние в графе. Пол дня уже мучаюсь, искал в гугле, сам пытался, но ничего не получается... просто тупик... Код вылаживать не буду, так как он не...
C++ задача со строками http://www.cyberforum.ru/cpp-beginners/thread380453.html
пожалуйста, помогите. Нужно написать программу , которая определит длину введенной строки L, и, если L>10, то удаляются все цифры. я так понял, что в строке должны быть и цифры и буквы
C++ Перехват запросов Здравствуйте Форумчане, у меня возникла проблема, я хочу сделать что-то вроде веб-логгера который будет перехватывать запросы и т.д. Не подскажите ли Вы мне как это можно реализовать. Заранее спасибо. подробнее

Показать сообщение отдельно
Chelioss
181 / 181 / 4
Регистрация: 08.01.2011
Сообщений: 1,139
09.11.2011, 18:15
Вот пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class Base 
{
public:
    void fun() { std::cout << "class Base\n"; };
};
 
class Derived: public Base
{
    void fun() { std::cout << "class Derived\n"; };
};
 
int main()
{
    Base *basePtr = new Derived;
    basePtr->fun(); // class Base
    system( "pause" );
    return 0;
}
Помечу вызывается функция класса Base? Потому что тип указателя - Base. Логично? Логично и это так.
А что если мы хотим вызвать функцию класса Derived?
Тогда добавляем спецификатор virtual для функции fun() в классе Base.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class Base 
{
public:
    virtual void fun() { std::cout << "class Base\n"; };
};
 
class Derived: public Base
{
    void fun() { std::cout << "class Derived\n"; };
};
 
int main()
{
    Base *basePtr = new Derived;
    basePtr->fun(); // class Derived
    system( "pause" );
    return 0;
}
Тут надо заметить, что если функция fun класса Base является виртуальной, то по умолчанию функция fun класса Derived тоже станет виртуальной( при наследовании, конечно ), а поэтому для наглядности можно написать так( это тоже самое, что и выше написано):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class Base 
{
public:
    virtual void fun() { std::cout << "class Base\n"; };
};
 
class Derived: public Base
{
    virtual void fun() { std::cout << "class Derived\n"; };
};
 
int main()
{
    Base *basePtr = new Derived;
    basePtr->fun(); // class Derived
    system( "pause" );
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru