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

Наследование классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу на с++ по теории информации http://www.cyberforum.ru/cpp-beginners/thread583556.html
ЛИНЕЙНЫЕ ГРУППОВЫЕ КОДЫ Закрепление знаний по методам кодирования информации. 1. Построить линейный групповой код, способный исправлять одиноч-ную ошибку. Вариант взять из лабораторной № 4. 2....
C++ Вывод больше заданного значения Доброго времени суток! Помогите пожалуйста разобраться как правильно организовать вывод списка работников, зарплата которых больше заданной. Функция void spispaid. Я так понимаю, сравнивать... http://www.cyberforum.ru/cpp-beginners/thread583552.html
C++ Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n (например, при вводе 50 программа выводит 1 4 9 16 25 36 49).
1. Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n (например, при вводе 50 программа выводит 1 4 9 16 25 36 49). 2. Дано натуральное число n. Определите,...
Синхронизация, семафор C++
Помогите синхронизировать код. const int j=20; hSemaphore = CreateSemaphore(NULL, 0, 1, NULL); DWORD __stdcall Process(LPVOID) { int t; WaitForSingleObject(hSemaphore, INFINITE);
C++ найти ошибку http://www.cyberforum.ru/cpp-beginners/thread583518.html
кто знаком с алгоритмом шифрования IDEA ,расшифровывает неправильно,не знаю почему,вот весь проект,с файлами,bac_text.txt -текст котор@ы надо зашифровать/расшифровать.temp.txt-записывает результат...
C++ winAPI консоль Добрый День .Можно сделать так что бы не смотреть на нудную загрузку консоль ,а сделать пока идёт загрузка картинку и будет там по центру надпись высвечивать "Ожидайте завершения загрузки"а когда... подробнее

Показать сообщение отдельно
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
23.05.2012, 08:57
Цитата Сообщение от Ksan Посмотреть сообщение
Ошибку выдаст
Разумеется выдаст. Weapon в данном случае не знает таких функций. Он может вызывать только функции, которые он знает. Вот так, скажем:
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
class Weapon
{
    public:
    virtual void bullet() {;}
};
 
class Ak47 : public Weapon
{
    public:
    void bullet(){cout << "Fire!" << endl;}
};
 
int main()
{
    Weapon *wea = new Ak47;
    (*wea).bullet();
    
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}
Выдаст Fire!
Если слово virtual убрать, то ничего не выведет: вызовется функция базового класса.


Цитата Сообщение от Ksan Посмотреть сообщение
чем плох такой вариант?
Так можно конечно сделать, но это будет запутаннее гораздо. Вот тогда как будет выглядеть создание объекта такого класса:
C++
1
Weapon w("AK47");
Однако если вы создадите новые классы, всего лишь придется написать:
C++
1
ak47 ak;
Да и потом, куча условий - это ведь не удобно. Вот если написать несколько классов - сразу видно что, где - нагляднее гораздо.
Вот напишите пару программ, потренеруйтесь. Почувствуйте наследование.

Не по теме:

PS С bers'ом я согласен, с этим не поспоришь

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