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

Так в каких случаях стоит использовать наследование? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив: Удалить в матрице столбцы количество нулей в которых больше половины. http://www.cyberforum.ru/cpp-beginners/thread793812.html
То что накрапал.Здание , которое необходимо реализовать : Удалить в матрице столбцы количество нулей в которых больше половины. При этом должна быть работа со структурами. // For practisw.cpp: определяет точку входа для конс приложения. // #include "stdafx.h" #include <conio.h> #include <iostream> #include <stdio.h> #include <iostream> #include <time.h>
C++ undefined reference to IID_IMultiLanguage Использую mingw + code::blocks для сборки библиотеки vmime под windows, в библиотеке используется COM, строка CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, IID_IMultiLanguage, (void**)&pMultiLanguage); выдает ошибку линковки undefined reference to `IID_IMultiLanguage'. IID_IMultiLanguage объявлен в mlang.h как extern, в libuuid.a где храняться эти определения... http://www.cyberforum.ru/cpp-beginners/thread793809.html
C++ Прединкремент и постинкремент в цикле for
Всем привет! Пытаюсь сам себе ответить на вопрос, есть ли разница в использовании пред- и постинкремента в цикле for. Т.е. циклы: for (a=0; a<10; a++); и for (a=0; a<10; ++a); идентичны или нет? Я не смог найти разницы.
C++ Осуществить сдвиг матрицы
вообщем программа много чего делает , не суть , проблема заключаеться в ф-ции memcpу , по сколько при выводиде результирующего массива скопированная в него вторая матрица принимает отрицательные значения... Короче говоря проблема в последнем выводе , выводять отрицательные значения. // 1LR OPI.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <conio.h>...
C++ Причина такого вывода данных? http://www.cyberforum.ru/cpp-beginners/thread793794.html
Простой пример. Определил размерность массива 100. Так почему sizeof выдаёт значение 400, а не 100? Любые значения множаться на 4. Это как же так? #include <array> #include <locale> #include <time.h> using namespace std; int M ;
C++ Создать базовый класс Array Задание выглядит так: Создать базовый класс Array, в котором определите полемассив подходящеrо типа и поле для хранения количества элементов у текущего объектамассива. Максимально возможный размер массива задается статической константой. Реализуйте конструктор инициализации, задающий количество элементов и начальное значение (по умолчанию О). Реализуйте методы доступа к отдельному элементу,... подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7159 / 4325 / 630
Регистрация: 29.11.2010
Сообщений: 11,750
25.02.2013, 21:03     Так в каких случаях стоит использовать наследование?
p0lym0rph, единственное применение private наследования это как раз указать, что класс "реализуется посредством". С помощью агрегации/вложения моделируют связь "содержит". Это даже не говорит о том, что между классами существует концептуальная взаимосвязь, это просто заинтересованность в повторном использовании кода. Это исключительно прием реализации а не проектирования связей.
Фактически, вложение тоже означает "реализуется посредством/содержит". Так вот, закрытое наследование надо использовать лишь в исключительных моментах, когда вы его просто обязаны применить, в остальных случаях предпочитайте агрегацию.
Пример: когда класс существует исключительно для того, чтобы быть унаследованным и до конца реализованным лишь у потомков, при этом обезопасив себя вы умышленно делаете все его методы закрытыми и используйте private наследование.
Но это тонкости языка.
А что означает protected? Лишь условность, удобство использования, конкретное определение связи оно не дает, нужно смотреть на рамки определенной задачи.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru