Форум программистов, компьютерный форум 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. Что тут я делаю не так? Вот... подробнее

Показать сообщение отдельно
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
19.09.2013, 14:50     Наследование и виртуальные функции
Доброго времени суток. Есть два вопроса:

1) Подскажите, плиз, что делаю не так. Есть базовый класс human и класс наследник solder. Если вызывать методы setName и setAge из наследника solder, то они не будут работать. Почему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class human {
    
    public: 
        void information() {
            cout << "My name is " << name << ". My age is " << age << endl;
        }
 
        void setAge(int set_age) {
            age = set_age;
        }
        
        void setName(string set_name) {
            name = set_name;
        }
    private:
        string name;
        int age;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
class solder : public human {
        
    public: 
 
        void information() {
            cout << "I am solder! My name is " << name << " and my age is " << age << endl;
        }
        
    private:
        string name;
        int age;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
 
human *alex = new human;
 
alex->setName("Alex");
alex->setAge(25);
alex->information();
 
delete alex;
 
solder *ivan = new solder();
 
ivan->setName("Ivan");
ivan->setAge(20);
ivan->information();
 
delete ivan;
return 0;
}
Результат работы программы:
My name is Alex. My age is 25
I am solder! My name is and my age is 0


2) В классе наследнике функция information() перегружается и в итоге имеем другой результат для класса наследника. В чем тогда отличие между таким способом изменения результата в наследнике и если бы функция information() была объявлена как virtual в классе human и в наследнике была бы переопределена?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru