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

Как переделать класс из обычного в абстрактный? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ доброе время суток,подскажите что не так?программа в С++ http://www.cyberforum.ru/cpp-beginners/thread367650.html
#include<iostream.h> #include<conio.h> #include<math.h> int main () { int xn,xk,a,b,c,dx; float f; clrscr(); cout<<endl<<"vveite a="; cin>>a;
C++ запись vector в бинарном виде есть что-то типа struct X { vector<Game*> v; }; int main() { X x; FILE* f=fopen(... fwrite(&x,sizeof(X),1,f); http://www.cyberforum.ru/cpp-beginners/thread367645.html
Напишите программу для вычесления суммы n-положительных слагаемых C++
Возник затуп с такой задачей: Напишите программу для вычесления суммы n-положительных слагаемых,количество суммируемых чисел должно вводиться во время работы программы.Написать на C++
C++ Задание :Помогите упорядочить масив по принцыпу змейки как показано на рисунку!
Задание :упорядочить масив по принцыпу змейки как показано на рисунку! Вот схема по которой надо упорядочит этот массив! http://s017.***********/i419/1110/7c/7c59024f8637.png =================================== =========
C++ Как вызвать из 1 функции параметры другой? http://www.cyberforum.ru/cpp-beginners/thread367616.html
Всем привет! Собственно, вопрос в названии. Хочу написать 2 функции: первая отводит память под массив, а вторая этот массив распечатывает. Условие: никаких внешних переменных и функции не должны ничего возвращать. void Array() { int row, col;
C++ Ошибка посчета столбов Нарошно у массива из 5 элементов проверяю 6ой выдает вот что. Вопрос почему числовое значение имеет отрицательное значение подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 14:22     Как переделать класс из обычного в абстрактный?
Цитата Сообщение от Миака Посмотреть сообщение
а если дописать просто чистую виртуальную функцию,а не деструктор,тоже работать не будет?
Как уже не раз было сказано выше, невозможно создать экземпляр абстрактного класса. Попытки создать такой экземпляр всегда будут приводить к ошибкам компиляции. Можно наследоваться и создавать объекты наследуемого класса, можно сделать в абстрактном функцию print чисто виртуальной, а в дочерних классах ее переопределять нужным образом.
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
class vector {
public:
    virtual void print() = 0;
};
 
class vector_console : public vector {
public:
    void print() {
        // for (...)
        //    std::cout << ...
    }
};
 
class vector_logfile : public vector {
public:
    void print() {
        // std::ofstream ofs ...
        // for (...)
        //    ofs << ...
    }
};
 
int main() {
    vector vb; // error
    vector_console vc; // ok
}
Хотя это решение весьма уродливое. Лучше переопределить что-то другое.
Например, если вектор может выделять памяти больше, чем надо в текущий момент, тогда можно было бы выделить как pure-virtual метод, который расчитывает количество памяти. Получилось бы куда более интересней.
 
Текущее время: 02:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru