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

C++

Войти
Регистрация
Восстановить пароль
 
 
jajavar
0 / 0 / 0
Регистрация: 16.01.2017
Сообщений: 13
#1

Абстрактный класс без виртуальных функций - C++

09.07.2017, 08:06. Просмотров 494. Ответов 21
Метки нет (Все метки)

Мне нужен класс без виртуальных функций, но чтобы его нельзя было создать. Можно ли такое реализовать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2017, 08:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактный класс без виртуальных функций (C++):

Указатель на абстрактный шаблонный класс - C++
Есть абстрактный шаблон класса и 3 производных от него шаблонов классов. Так же есть шаблонная функция, в которую нужно передать указатель...

Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: ариф - C++ Builder
Здравствуйте, помогите разобраться с задачей Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать...

Почему отладчик Visual Studio не полностью отображает таблицы виртуальных функций? - Visual C++
Как заставить его отображать верно? Добавлено через 2 минуты Если, например, использовать производные классы, то в отладчике...

Абстрактный класс и рисование - C++ WinAPI
Имеется класс - авто, который имеет место появления на оси координат и координаты х,y. функции движения\остановки. Так же имеется класс...

Константы виртуальных клавиш - C++ WinAPI
Помогите, пожалуйста. Все константы вируальных клавиш хранятся на компьютере в виде таблицы. Подскажите, где именно, в каком файле?! Я...

функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. - C++
функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
09.07.2017, 09:27 #2
Цитата Сообщение от jajavar Посмотреть сообщение
Можно ли такое реализовать?
разрешаю.

сделайте классу приватный конструктор.
и тогда ни одна сволач не сможет построить объект.
кроме статических функций-членов, и друзей класса,
разумеется.
1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
12.07.2017, 09:29 #3
Сделать чисто виртуальный деструктор.
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
12.07.2017, 09:40 #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
Сделать чисто виртуальный деструктор.
Цитата Сообщение от jajavar Посмотреть сообщение
без виртуальных функций
...
0
TRam_
215 / 222 / 56
Регистрация: 14.05.2017
Сообщений: 778
17.07.2017, 15:28 #5
hoggy, у класса конструктор и деструктор по умолчанию существуют всегда, потому создать класс/структуру в С++ совсем без функций невозможно.
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
17.07.2017, 22:24 #6
Цитата Сообщение от TRam_ Посмотреть сообщение
у класса конструктор и деструктор по умолчанию существуют всегда, потому создать класс/структуру в С++ совсем без функций невозможно.
Цитата Сообщение от jajavar Посмотреть сообщение
без виртуальных функций
без виртуальных функций
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6465 / 3113 / 306
Регистрация: 04.12.2011
Сообщений: 8,587
Записей в блоге: 4
17.07.2017, 22:29 #7
Цитата Сообщение от TRam_ Посмотреть сообщение
hoggy, у класса конструктор и деструктор по умолчанию существуют всегда
Нет. Определите любой с параметрами и дефолтный исчезнет до тех пор пока не будет объявлен явно.
Совет правильный. Определяем любой (хоть пустой) и закрываем.
Беда в другом. Как я помню, абстрактный класс это класс который имеет хотя бы один чисто виртуальный метод. Хотя книжки бывают и неправы.
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
17.07.2017, 22:34 #8
Цитата Сообщение от TRam_ Посмотреть сообщение
у класса конструктор и деструктор по умолчанию существуют всегда, потому создать класс/структуру в С++ совсем без функций невозможно.
вероятно вы имели ввиду "создать объект класса/структуры".

с++ - высокоуровневый ассемблер с прямым доступом к памяти,
и развитой системой изнасилования типов.

здесь все возможно, кроме рефлексии

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
 
int main()
{
    struct ololo { int v; };  //<--- берем любой класс/структуру
 
    char buf[sizeof(ololo)] = { 0 };  //<--- аллоцируем блок памяти под объект
    
    auto* ptr = reinterpret_cast<ololo*>(buf);  //<--- и о боже! получаем объект в обход конструктора
    auto& ref = *ptr;
 
    std::cout << ref.v << std::endl;
    
    //<--- диструктор тоже не вызовется
    
}
0
TRam_
215 / 222 / 56
Регистрация: 14.05.2017
Сообщений: 778
17.07.2017, 23:17 #9
hoggy, подразумевал чуть другое - что либо конструкторы/деструктор по умолчанию у класса существуют, либо они переопределены явными конструкторами/деструкторами. Но они всё равно есть. Хотя в исполняемый код в предложенном вами случае, действительно, не сгенерируются, т.к. не используются...
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
17.07.2017, 23:50 #10
Цитата Сообщение от TRam_ Посмотреть сообщение
подразумевал чуть другое - что либо конструкторы/деструктор по умолчанию у класса существуют, либо они переопределены явными конструкторами/деструкторами. Но они всё равно есть.
ну и причем тут виртуальные функции?
как это ваше высказывание связанно с вопросом автора темы?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
19.07.2017, 03:55 #11
Цитата Сообщение от jajavar Посмотреть сообщение
Мне нужен класс без виртуальных функций, но чтобы его нельзя было создать. Можно ли такое реализовать?
Что значит "чтобы его нельзя было создать"?
0
Alex0x0000058
51 / 53 / 17
Регистрация: 30.04.2016
Сообщений: 217
Завершенные тесты: 2
19.07.2017, 14:33 #12
TheCalligrapher, видимо, нельзя создать экземпляр класса
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
19.07.2017, 18:04 #13
Цитата Сообщение от TRam_ Посмотреть сообщение
либо конструкторы/деструктор по умолчанию у класса существуют, либо они переопределены явными конструкторами/деструкторами. Но они всё равно есть.
C++
1
2
3
class C {
    C() = delete;
};
?
1
TRam_
215 / 222 / 56
Регистрация: 14.05.2017
Сообщений: 778
19.07.2017, 18:15 #14
Somebody, единственное что - это только для С++11 и выше. Но за пример - спасибо.
0
GbaLog-
Любитель чаепитий
2768 / 1290 / 311
Регистрация: 24.08.2014
Сообщений: 4,569
Записей в блоге: 1
Завершенные тесты: 2
20.07.2017, 09:08 #15
Цитата Сообщение от TRam_ Посмотреть сообщение
это только для С++11 и выше.
C++
1
2
3
4
class C
{
    C();
};
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2017, 09:08
Привет! Вот еще темы с ответами:

Механизм виртуальных функций - C++
Всем привет! Имею базовый абстрактный класс: class Interface { public: //функция детектирования устройства true - если команда...

Буст сериализация. указатель на абстрактный базовый класс без конструктора по умолчанию - Boost C++
Читая документацию по сериализации с помощью буста запутался. Ситуация следующая. Имеется виртуальный базовый класс в Base.h: ...

Перегрузка виртуальных функций - C++
please HELP! перегружаю виртуальную функцию в абстрактном классе. class ONE { virtual std::string FUN(const std::string&amp;...

Вызов виртуальных функций - C++
Доброго времени суток, форумчане! Стоит такая задача: Есть класс, который содержит три чисто виртуальные функции, назовём его IClass. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.07.2017, 09:08
Ответ Создать тему
Опции темы

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