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

Производный класс. Перегрузка << (cout). - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ среднее арифметическое строк и столбцов http://www.cyberforum.ru/cpp-beginners/thread430858.html
Отзовитесь, ЭКСПЕРТЫ!!! Вот условие задачи: сред. арифм. строк и столбцов. Если макс. сред. арифм. строк больше сред. арифм. столбцов - обменять элементы первой строки с последней , в противном случае - элементы первого столбца с последним. Это краткое условие (другого к сожалению нет) #include <iostream> #include <cstdlib> #include <cstddef> #include <iomanip>
C++ Исправить ошибку в программе. #include<iostream> #include <math.h> #include <time.h> #include <iomanip> using namespace std; int main() {double A; int i,j; srand (time(NULL)); for(i=0;i<3;i++) http://www.cyberforum.ru/cpp-beginners/thread430856.html
Нахождение логарифма. C++
Есть такая программка для нахождения функции log10(a+b) разложением в ряд ,с точностью eps, и сравнения полученного значения с точным. Внимание вопрос:): правильно ли все написано? Меня смущает то что слишком большая разница получается между точным и приближенным значениями. #include <iostream.h> #include <conio.h> #include <math.h> void main () { clrscr(); double a,b, eps; double...
C++ Компилятор не видит функции graphics.h
В папку include включил файл graphics.h. В коде подключил этот файл (#include <graphics.h>), пытаюсь использовать функции оттуда, но компилятор выдаёт ошибку: "undefined reference to 'line'\'arc'\'detectgraph'\'initgraph'\'initwindow' ". Что необходимо сделать, чтобы компилятор "нашёл" эти функции?
C++ Создать классы, имеющие элементы-данные и функцию печати. http://www.cyberforum.ru/cpp-beginners/thread430825.html
Да-да, я полный дуб в С++, но лабораторные как-то надо сдать..(( Создать классы, имеющие элементы-данные и функцию печати. ТОВАР (имя – char *, количество – int, стоимость – float)
C++ нужна програмка нужна програмка, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.01.2012, 23:11     Производный класс. Перегрузка << (cout).
И ходя выше задекларировано, что mass[i] указывает на Port, но происходит переопределение типа и происходит корректно, надо сказать, ибо Port- родителський класс. Так что всё просто; с этого момента mass [i] (mass[1]) указывает на винтажный порт!
да не так все. вы похоже сами проблему не понимаете.
вот упрощенный пример. соберите и посмотрите как все работает
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
 
namespace Bad
{
  class Base
  {
  };
 
  std::ostream& operator << (std::ostream& out, const Base& base)
  {
    out << "Base";
    return out;
  }
 
  class Der : public Base
  {
  };
 
  std::ostream& operator << (std::ostream& out, const Der& der)
  {
    out << "Der";
    return out;
  }
}
 
namespace Good
{
  class Base
  {
  public:
    virtual void Print(std::ostream& out) const
    {
      out << "Base";
    }
  };
 
  std::ostream& operator << (std::ostream& out, const Base& base)
  {
    base.Print(out);
    return out;
  }
 
  class Der : public Base
  {
    virtual void Print(std::ostream& out) const
    {
      out << "Der";
    }
  };
}
 
int main()
{
  {
    // Base ссылается на производный класс (считай винтажный порт.)
    // Но вызывается оператор, который определен для базового класса (считай обычный порт)
    std::cout << "Bad:" << std::endl;
    Bad::Der der;
    Bad::Base* base = &der;
    std::cout << "print: " << *base << std::endl;
  }
 
  {
    // А вот по прежнему вызывается оператор, который определен для базового класса
    // (другого даже нет), но работает все так, как и задумывалось.
    std::cout << "Good:" << std::endl;
    Good::Der der;
    Good::Base* base = &der;
    std::cout << "print: " << *base << std::endl;
  }
 
  return 0;
}
 
Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru