Форум программистов, компьютерный форум 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
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2012, 00:13     Производный класс. Перегрузка << (cout).
И еще для справки:
1.
Нельзя написать виртуальный оператор << (как метод класса) чтобы использование было таким:
C++
1
std::cout << obj;
Можно только в виде свободной ф-ии или захерачить такой оператор в классе std::ostream (а его трогать нельзя, так что такой способ тоже не подходит).

Если вы все же сделаете этот оператор мембером класса, то компилироваться будет только такая запись:
C++
1
obj << std::cout;
Но кто захочет этим пользоваться? Никто. Поэтому используется подход с виртуальными методами печати и одним оператором << для базового класса, в имплементе которого у ссылки, имеющей тип базового класса вызывается виртуальная ф-ия печати.

2. Компилятор подбирает ф-ию на основании статических типов.
Статический тип выражения *p1 - это const Port&. Поэтому всегда привсегда будет вызываться реализация оператора <<, у которого в сигнатуре прописан этот самый const Port&, т.е.
std::ostream& operator << (std::ostream& out, const Port& port);

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