Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ ООП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [C++] Регулярные выражения http://www.cyberforum.ru/cpp-beginners/thread149699.html
Знаю что в стандарте С нет регулярных выражений. Хочу попробывать собрать простую функцию поиска по шаблону регулярных выражений. Аналог int preg_match_all ( string $pattern , string $subject ,...
C++ Include gurad В моей программе, при попытке использования сабжа, происходит ошибка. Для проверки я составил следующий код. //hd1.h #ifndef hd1 #define hd1 #include "hd2.h" class hd1 { public: http://www.cyberforum.ru/cpp-beginners/thread149686.html
Как назывался компилятор типаBorland Pascal только для C++ C++
Там такое же синие окошечко было?
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять? C++
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять?
C++ Каталог товаров (Dev-C++) http://www.cyberforum.ru/cpp-beginners/thread149660.html
создать программу,позволяющую вводить элементы массива структур(размерность массива не более 20 элементов),содержащие сведения об имеющихся в наличии товарах,наименовании товара,его количество в...
C++ Синтаксические ошибки при компиляции программы на структуру #include <iostream> #include <string.h> #define n 4; using namespace std; struct OIL{ char marka; int litri; int cena; }; OIL oil; подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
27.06.2010, 09:34
Цитата Сообщение от easybudda Посмотреть сообщение
Опять же сам класс "топливо" можно сделать с переменной "название" и функцией, возвращающей энергию в джоулях при расходе определённого объёма. А от него потомков наделать (дрова, уголь, бензин...) с единицами измерения (кубометры, тонны, литры/галлоны)... Короче при желании можно в такие дебри забраться, что будет место и для инкапсуляции, и для полиморфизма...
Проблема в том, что в таком случае мы будем иметь дело с большим количеством классов, без чего в принципе можно обойтись (что и нужно сделать). Не следует плодить сущностей без необходимости.
Задача не является задачей на ООП. На механизм наследования - да, но не более. В основном потому, что нет взаимодействия между объектами различных классов.
Цитата Сообщение от Lavroff Посмотреть сообщение
Ок. Будет virtual. В каждом абстрактном классе?
Если подразумевается наследование, то деструктор должен быть объявлен виртуальным в базовом классе. Это необходимо для правильного вызова деструктора объекта производного класса при удалении его через указатель на базовый класс.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class Base {
public:
  ~Base() {
    std::cout << "Base::~Base" << std::endl;
  }
};
 
class Derived : public Base {
public:
  ~Derived() {
    std::cout << "Derived::~Derived" << std::endl;
  }
};
 
int main() {
  Base* obj = new Derived;
  delete obj;
}
Вывод программы:
Base::~Base
В данном случае деструктор базового класса не является виртуальным, поэтому подлежит статическому связыванию и его вызов будет на этапе компиляции связан с деструктором базового класса (по типу указателя).

Если же мы объявим деструктор виртуальным, вывод будет следующим:
Base::~Base
Derived::~Derived
Деструктор в базовом классе объявлен виртуальным и поэтому подлежит динамическому связыванию.
Виртуальный деструктор ничем от виртуальной функции не отличается, кроме того, что вызывается автоматически при уничтожении объекта.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru