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

Делимся знаниями по С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа на рекурсию - Перестановка ! http://www.cyberforum.ru/cpp-beginners/thread329004.html
Доброго времени суток, уважаемые знатоки. Возникла проблема с решением данной программы. Надеюсь услышать не глупые советы в стиле - решается простой рекурсией, или что тут всё просто как два пальца Суть : Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. Ввод В первой строке файла находится исходная строка. Вывод Вывести в каждой...
C++ Функции языка с++ и считывание данных в массив Помогите найти ошибку в решении задачки на функции с++ и хранение данных в массиве. Программа должна запрашивать ввод данных (счета при какой-то игре) и сохранять их в массив, после чего считать средний результат. Счет данных и подсчет среднего значения должны управляться отдельными функциями. Максимальное кол-во данных - 10. У пользователя должна быть возможность прерывать ввод данных при вводе... http://www.cyberforum.ru/cpp-beginners/thread328992.html
C++ Пмогите допилить програмку
#include <iostream> using namespace std; int main() { struct list { int data; list *next; list *prev; }; list *cur=0;
C++ Форматирование тексту + ошибки + лишнее
Вот задача + решение // xz.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl;
C++ Функции языка с++ http://www.cyberforum.ru/cpp-beginners/thread328921.html
Пожалуйста не поленитесь, прочитайте всё и помогите :) . Заранее СПАСИБО! Разработайте функцию calculate(), принимающую два значения типа double и указатель на функцию, которая принимает в качестве аргументов два значения типа double и возвращает значение типа double. Функция calculate() также должна иметь тип double. Она должна возвращать значение, вычисляемое функцией, на которую указывает...
C++ Считывание файла Как можно считать из файла строку 110011, как массив чисел, заранее спасибо! подробнее

Показать сообщение отдельно
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
03.07.2011, 12:38  [ТС]     Делимся знаниями по С++
Цитата Сообщение от pito211 Посмотреть сообщение
вроде у страуструпа в книге написан примерчик типа
C++
1
2
3
4
class employer
{
}
class manager : public employer
а тут ничего не говорящие имена... в каком то плане действительно пример в твоей книжке неудачный

Добавлено через 2 минуты

чтобы во время выполнения определять настоящий тип объекта для которого вызывается функция и вызывать соответсвующую версию, а не версию из какого то класса предка
Тоже такое в книге есть. Теперь вот моя версия и проверенная зачем нужна виртуальная функция.
Как мы знаем фундамент на котором С++ строит свою поддержку полиморфизма это указатели на базовые классы и наследование. А конкретное средство которое реализует полиморфизм это виртуальная функция. Так вот указатель на базовый класс может указывать ток на базовые члены в производном объекте ,а на объявленные в производном не может(спецефические). И что получается обобщенный интерфейс который не имеет доступа к этому классу. Это тоже самое что прилепить руль к тачке и не иметь доступа к газу и тормозу. То есть наш обобщенный интерфейс реализует указатель на базовый класс и наследование. И все же доступа мы к тачке так и получили(к классу). И тут появляется виртуальная функция к ней доступ указатель на базовый класс имеет хоть и она является специфическим членом базового класса. И таким образов с помощью неё мы можем обращатся к специфическим членам производного класса. Она играет роль функции доступа. Таким образом мы получили доступ к нашей тачке(классу). Вот полезный пример использования виртуальной функции. Ток простой.
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
#include <iostream>
using namespace std;
 
 
class lok {
public:
  int z;
  virtual void pop() { cout << z; }
  lok(int i) { z = i;}
};
 
class nn : public lok {
public:
  int i;
  void pop() { 
    i = 3;
    cout << i;
   }
  nn(int i) : lok(i) {}
};
 
 
int main() {
  lok *p;
  nn k(5);
  p = &k;
  p -> pop();
  return 0;
}
Окончательный ответ виртуальная функция нужна для того чтобы получить доступ к специфическим членам производного класса посредством указателя на базовый класс.
 
Текущее время: 19:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru