Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677

Конструктор и деструктор анонимного класса

23.03.2014, 21:04. Показов 4254. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2014, 21:04
Ответы с готовыми решениями:

Конструктор (деструктор) у класса, не имеющего тип
Можно ли объявить и определить конструктор у класса, который не имеет тип? То есть у меня в программе всего 1 экземпляр этого класса,...

Дописать конструктор и деструктор для класса
Помогите пожалуйста написать конструктор копии и деструктор, а также вызвать их, чтобы деструктор выводил на экран "работает" ...

Зачем нужны конструктор и деструктор класса?
вот задание: Пользовательский класс Х должен содержать необходимые элементы-данные, которые создаются в динамической области памяти....

26
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
23.03.2014, 21:30
Возможности такой нет.

Retyrn0, будет проще тебе помочь, если ты расскажешь про свою задачу.
1
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
23.03.2014, 22:05  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
будет проще тебе помочь, если ты расскажешь про свою задачу.
Класс с единственным экземпляром WORLD - поэтому удобнее пользовать анонимный класс, кроме того нужно исключить возможность создания других экземпляров - это не критичное требование, но объявление нового экземпляра не имеете никакого смысла, потому что весь функционал библиотеки привязан к имени основного экземпляра. Раз возможности реализовать конструктор и деструктор анонимного класса нет, буду использовать именованный. Спасибо за помощь!

Добавлено через 1 минуту
Ещё подумываю над реализацией без ООП, хотя это менее понятно интуитивно...
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
23.03.2014, 22:06
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс с единственным экземпляром WORLD
Это синглтон.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
23.03.2014, 22:22  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Это синглтон.
Спасибо, идея не плохая, но думаю, проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
24.03.2014, 11:00
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
то же самое ведь, что и синглетон
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.03.2014, 11:02
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 13:42  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
Единственный экземпляр класса создаётся и уничтожается единожды - вместо автоматических конструкторов и деструкторов мне придётся дописать 2 строки кода вызова метода в начале и в конце программы. Создать другой экземпляр анонимного класса - штука "затруднительная", так что мои потребности покрываются в полной мере. Чем это сложнее синглтонов? Мне даже придумывать имя классу не придётся)

Добавлено через 3 минуты
Цитата Сообщение от aLarman Посмотреть сообщение
то же самое ведь, что и синглетон
По реализациям, которые я видел, у синглтона есть имя класса, мой анонимный. По самому определению, скорее Вы правы - мой класс ведёт себя аналогично, но именно такой реализации синглтона я не видел - поэтому не знаю. Это вопрос формулировок.
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
24.03.2014, 13:46
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Мне даже придумывать имя классу не придётся)
это как? О_О
хочу увидеть Вашу реализацию
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
24.03.2014, 13:57
Цитата Сообщение от aLarman Посмотреть сообщение
это как?
C++
1
class {...} foo;
наверное.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.03.2014, 13:59
Что не запрещает создать несколько объектов)
C++
1
class {...} foo, bar, baz;
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 14:04  [ТС]
Цитата Сообщение от aLarman Посмотреть сообщение
это как? О_О
хочу увидеть Вашу реализацию
C++
1
2
3
4
5
6
7
class
{
public:
    init(){}
    release(){}
}
WORLD;
При старте программы -
C++
1
WORLD.init();
При завершении -
C++
1
WORLD.release;
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
24.03.2014, 14:06
а смысл методов init и release если класс есть глобальная переменная которая и без того создается и удаляется 1 раз
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 14:07  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Что не запрещает создать несколько объектов
Динамически добавлять как? Класс библиотечный и по задумке саму библиотеку менять нельзя...например, Вы же не меняете стандартные библиотеки - это беспантово)
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.03.2014, 14:17
Ой, я ж теперь могу ссылаться на официальный FAQ: http://isocpp.org/wiki/faq/cod... lobal-vars

Добавлено через 3 минуты
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс библиотечный
Ок, и как такой библиотекой пользоваться?
Чтобы обращаться к методам WORLD, нужно его объявление. В данном случае объявление и определение невозможно разделить. Подключаем в два разных файла - и выхватываем ошибку линковки, потому что в двух единицах трансляции появляются глобальные объекты с одинаковыми именами.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 14:50  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Подключаем в два разных файла
Не понял что подключаем? Библиотеку? - Для этого есть препроцессор.

Добавлено через 6 минут
Получается, что объект WORLD глобальный, а вот создать такой же объект не из библиотеки не получиться - класс анонимный - как раз то, что мне нужно. В библиотеке есть класс и функции инициализации всего и освобождения. Т.е. при использовании библиотеки нужно подключить её, запустить Init() и по завершении запустить Release(). А всё необходимое сделает сама библиотека.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.03.2014, 15:01
А проверьте-ка у себя такой пример.
Библиотека:
C++
1
2
3
4
5
6
7
// File World.h
#pragma once
 
class {
public:
    int n;
} WORLD;
Программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// File main.cpp
#include "World.h"
 
#include <iostream>
 
void g();
 
int main()
{
    WORLD.n = 10;
    std::cout << "main: " << WORLD.n << std::endl;
    g();
}
C++
1
2
3
4
5
6
7
8
9
// File app.cpp
#include "World.h"
 
#include <iostream>
 
void g()
{
    std::cout << "app: " << WORLD.n << std::endl;
}
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 15:54  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
А проверьте-ка у себя такой пример.
Я намёк понял, но я использую единственный .cpp, а c множеством .h всё работает как надо.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.03.2014, 15:55
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Я намёк понял, но я использую единственный .cpp
Это частный случай, и полагаться на то, что так будет и дальше - не стоит.

Решение некорректно. Больше тут нечего говорить.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
24.03.2014, 16:12  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Это частный случай
Иных случаев не предвидится.
Если мне взбредёт в голову осуществить общедоступную реализацию, обязательно воспользуюсь советами, но пока я пишу библиотеку для себя, и мне одного срр более чем достаточно.

Вопрос был о конструкторе и деструкторе анонимного класса - я понял, они в с++ невозможны.
Спасибо огромное за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2014, 16:12
Помогаю со студенческими работами здесь

Для класса задать конструктор и деструктор
Ребята,нужна помощь в написании программы. Для класса задать конструктор(для выделения памяти,открытия файлов,задания начальных значений...

Создание класса с перегрузкой операторов конструктор и деструктор
Создать класс времени (Time) содержащий закрытую переменную-член хранящую целое значение времени интервала в секундах. Интерфейс класса...

Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса
Всем привет! Порылся в интернете, но не смог найти конкретного ответа на свой вопрос. Возможно я просто не смог грамотно сформулировать...

При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Вот такой кодclass A { public: A(){} virtual ~A(){} }; class C { public:

Конструктор инициализации, конструктор копирования, деструктор
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru