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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Одномерные массивы http://www.cyberforum.ru/cpp-beginners/thread957805.html
Прошу помочь с заданием В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) произведение отрицательных элементов массива ; 2) сумму положительных элементов массива, расположенных до максимального элемента. Изменить порядок следования элементов в массиве на обратный.
C++ Найти периметр четырехугольника Даны координаты вершин произвольного четырех угольника найти периметр четыре угольника использовать функцию для вычисления длины одной стороны Добавлено через 7 минут Срочняк http://www.cyberforum.ru/cpp-beginners/thread957784.html
C++ Прочитать 7z архив
Доброго времени суток. Нужно прочитать 7z архив. А именно достать инфу(список файлов, версия архиватора и тп). Может кто подскажет под какими байтами там всё это дело лежит?
Что значит ->? C++
Наткнулся на непонятное место в непонятном коде. Оно показалось мне особенно непонятным, загуглить не получилось. Что значит: new btTriangleIndexVertexArray(g_bmod_tris->indices_c/3,g_bmod_tris->indices,3*sizeof(int),g_bmod_tris->vertices_c,g_bmod_tris->vertices,3*sizeof(float)); -> - что это такое? плюс ещё sizeof(int) - вернет 2 байта что-ли?
C++ Как понять int a(int x,int y, int z)? http://www.cyberforum.ru/cpp-beginners/thread957717.html
какое значение будет у переменной а?
C++ Как подключить к проекту OpenGL и GLUT ? В С++ я новичок, перехожу на него с С#, так что многого еще не понимаю. Необходимо подключить к моему классу GameWindow OpenGL и GLUT. GLUT скачал и имею файлы glut.h, glut.def, glut.dll, glut.lib. Что мне с ними делать? OpenGL подключаю так: #include <gl\GL.h> #include <gl\GLU.h> Но Visual Studio выдает множество ошибок внутри заголовочных файлов gl.h и glu.h. Что тут я делаю не так? Вот... подробнее

Показать сообщение отдельно
Cynacyn
 Аватар для Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
24.09.2013, 14:50     Наследование и виртуальные функции
Цитата Сообщение от qazc Посмотреть сообщение
Доброго времени суток. Есть два вопроса:

2) В классе наследнике функция information() перегружается и в итоге имеем другой результат для класса наследника. В чем тогда отличие между таким способом изменения результата в наследнике и если бы функция information() была объявлена как virtual в классе human и в наследнике была бы переопределена?
Как я уже сказал, если бы инициализировали указатель на human (базовый) указателем на soldier (производный).
C++
1
2
human* p = new soldier;
p->information();
то при вызове метода information() (предполагается что он замещён в производном классе), вызывается метод soldier::information(), если в human метод information() объявлен как виртуальный, если нет - то тогда вызывается human::information().

+ ещё пример использования виртуальных функция из вики:
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
class A
{
public:
     virtual int function () {
        return 1;
     }
 
     int get() {
         return this->function();
     }
};
 
class B: public A
{
public:
     int function() {
        return 2;
     }
};
 
#include <iostream>
 
int main() {
   B b; 
 
   std::cout << b.get() << std::endl; // 2
 
   return 0;
}
rsdn: Зачем нужны виртуальные функции?

wiki: Виртуальные методы
 
Текущее время: 12:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru