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

Для чего нужны виртуальные функции и виртуальное наследование ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Stack overflow http://www.cyberforum.ru/cpp-beginners/thread1125019.html
Реализовал структуру данных стек на связном списке, очистку решил возложить на деструкторы узлов, т.е. каждый вызов деструктора узла вызывает деструктор следующего узла. Правильно ли я понимаю, что при таком методе очистки ресурсов, если количество узлов какое-то, например, огромное, количество деструкторов на стеке превысит какое-то определенное количество и произойдет stack overflow? private:...
C++ Определить номера строк в матрице, где элементов из [А,В] больше, чем из [-inf,А],[В,+inf] Задание: Определить номера строк в матрице, в которых элементов, принадлежащих отрезку, больше, чем элементов, принадлежащих отрезкам,. Вот код. #include "stdafx.h" #include <iostream> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread1125017.html
C++ Подсчет количества нулей в матрицах
Нужно пощитать количество нулей у матрицах A (N, M) и B (M, N). Вычисление сделать как функцию. Програма Dev C++. Матрицы рандомные.
C++ Подскажите пожалуйста, где ошибка?
/* Лабораторная работа 2 */ /* Типы данных и ввод-вывод */ /* Пример выполнения. Вариант 30. */ /*******************************************************/ #include <stdio.h> #include <iostream> int main(void) { setlocale(0,"") char name1, name2, name3;
C++ использование sound() nosound() http://www.cyberforum.ru/cpp-beginners/thread1124996.html
#include <iostream> #include <dos.h> void main() { sound(7); delay(1000); nosound(); } Ругается на внутрискобки void, помогите пожалуйста! int ввел, там ошибка в sound (7), как исправить и почему так? DevC++
C++ Error 1 error LNK1118: syntax error in 'LIBRARY' statement Всем привет. Не получается написать .def файл. Постоянно выпадает ошибка: Error 1 error LNK1118: syntax error in 'LIBRARY' statemen Вот мой .def файл: LIBRARY dll_lib_def EXPORTS add имя библиотеки уже писал по-разному. Все равно эта ошибка. Сама библиотека находится в папке проекта, как и .def file. подробнее

Показать сообщение отдельно
zss
Модератор
Эксперт С++
6358 / 5922 / 1919
Регистрация: 18.12.2011
Сообщений: 15,219
Завершенные тесты: 1
20.03.2014, 17:22
Если мы хотим из базового класса вызвать метод,
который будет реализован в производном классе,
то объявляем его виртуальным.
Доступ к нему осуществляется через указатель на базовый класс:
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
class A
{
public:
    virtual void f1();
    void f2();
};
class B:public A
{
public:
    virtual void f1();
    void f2();
};
int main()
{
    A *pa;
    A a;
    B b;
    pa=&b; // инициализируем указатель базового класса адресом производного класса
    pa->f1(); // вызов виртуальной функции ПРОИЗВОДНОГО класса
    pa->f2(); // вызов обычной функции БАЗОВОГО класса
    b.f1(); // вызов функции f1 ПРОИЗВОДНОГО класса обычным способом
    b.f2(); // вызов обычной функции f2 ПРОИЗВОДНОГО класса
  
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru