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

Наследование - вызов конструкторов и деструкторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему перегруженные операторы ввода/вывода нельзя сделать членами класса? http://www.cyberforum.ru/cpp-beginners/thread1567870.html
Добрый вечер, Решаю домашнее задание, и вот вопрос возник. Создал класс и перегрузил ввода/вывод. Но не нашел информации почему перегрузки ввода/вывода friend. Почему функция не может быть просто istream& operator>> ,а обязательно через friend? friend istream& operator>>(istream& istr, shaverma& sh){ cout << endl; cout << "Name of shaverma: " ; istr >> sh.name; cout << "Weight...
C++ Найти площадь заштрихованной области Всем Доброго Времени суток. Мне в техникуме дали задание (прикреплено), и я почему-то совсем не могу понять как это решить... знания в программированию не самые худшие, а во о в математике... http://www.cyberforum.ru/cpp-beginners/thread1567862.html
C++ Оператор взятия адреса
Доброй ночи, оператор взятия адресса не перечислен среди Special member functions, но он реализуется компилятор по умолчанию, если его не реализовать явно. #include <iostream> using namespace std; class A
C++ Алгоритм поиска пути и прорисовка его
Есть класс Карта #ifndef MAP_H #define MAP_H #include <SFML\Graphics.hpp> class Map{ private: int m_level; public:
C++ Undeclared identifier (cout, endl, cin) http://www.cyberforum.ru/cpp-beginners/thread1567849.html
#include "iostream" #include "stdafx.h" #include "cmath" #include "cstdio" using namespace std; int main(void) { int v; cout <<"Vvedite vozrast: "<<endl;
C++ Графы.Список смежности. Поиск в глубину Разработать программу, которая читает числа N, M - кол-во вершин и рёбер графа. Программа сохраняет граф в виде списка смежности и выполняет поиск в глубину. На экран нужно вывести вершины в порядке обхода, для каждой указать время начала и конца рассмотрения и указать предка в дереве обхода подробнее

Показать сообщение отдельно
mporro
256 / 102 / 14
Регистрация: 04.07.2014
Сообщений: 571
05.11.2015, 12:51     Наследование - вызов конструкторов и деструкторов
gromo
Ничего разделить не получится.
Как бы Вы ни пытались, но
C++
1
2
class A_impl: public B_type {
};
всегда вместе с типовой меткой прицепит к A_impl реализацию из B_type. Единственное, что можно сделать, это лишить B_type всякой реализации, в том числе и разного рода приватных методов (это же детали реализации, зачем они там, где реализации нет?)

Приличный дизайн подразумевал бы нечто подобное:

-- определим тип
Type Show {
show(some_stream: Tostream): Tostream
}


Object SomeImplementation Ensures Show {
Show::show(some_stream: Tostream): Tostream
{
-- code goes here
}
}

-- ошибка компиляции SomeImplementation не определяет тип
Object TheOtherImplementation Ensures SomeImplementation {
}

То есть, типы и реализации принципиально разделены.

Non-virtual interfaces -- это просто внедрение лишней детали. А лучшая деталь та, которой нет.
По-существу non-virtual interface если и не является "анти-паттерном", то очень близко к этому.
 
Текущее время: 00:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru