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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
#1

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

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

Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 21:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор и деструктор анонимного класса (C++):

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

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

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

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

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

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

26
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,293
23.03.2014, 21:30 #2
Возможности такой нет.

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

Добавлено через 1 минуту
Ещё подумываю над реализацией без ООП, хотя это менее понятно интуитивно...
0
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,293
23.03.2014, 22:06 #4
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс с единственным экземпляром WORLD
Это синглтон.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
23.03.2014, 22:22  [ТС] #5
Цитата Сообщение от DrOffset Посмотреть сообщение
Это синглтон.
Спасибо, идея не плохая, но думаю, проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 11:00 #6
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
то же самое ведь, что и синглетон
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
24.03.2014, 11:02 #7
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
24.03.2014, 13:42  [ТС] #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
Единственный экземпляр класса создаётся и уничтожается единожды - вместо автоматических конструкторов и деструкторов мне придётся дописать 2 строки кода вызова метода в начале и в конце программы. Создать другой экземпляр анонимного класса - штука "затруднительная", так что мои потребности покрываются в полной мере. Чем это сложнее синглтонов? Мне даже придумывать имя классу не придётся)

Добавлено через 3 минуты
Цитата Сообщение от aLarman Посмотреть сообщение
то же самое ведь, что и синглетон
По реализациям, которые я видел, у синглтона есть имя класса, мой анонимный. По самому определению, скорее Вы правы - мой класс ведёт себя аналогично, но именно такой реализации синглтона я не видел - поэтому не знаю. Это вопрос формулировок.
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 13:46 #9
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Мне даже придумывать имя классу не придётся)
это как? О_О
хочу увидеть Вашу реализацию
0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,197
Завершенные тесты: 1
24.03.2014, 13:57 #10
Цитата Сообщение от aLarman Посмотреть сообщение
это как?
C++
1
class {...} foo;
наверное.
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
24.03.2014, 13:59 #11
Что не запрещает создать несколько объектов)
C++
1
class {...} foo, bar, baz;
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
24.03.2014, 14:04  [ТС] #12
Цитата Сообщение от aLarman Посмотреть сообщение
это как? О_О
хочу увидеть Вашу реализацию
C++
1
2
3
4
5
6
7
class
{
public:
    init(){}
    release(){}
}
WORLD;
При старте программы -
C++
1
WORLD.init();
При завершении -
C++
1
WORLD.release;
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 14:06 #13
а смысл методов init и release если класс есть глобальная переменная которая и без того создается и удаляется 1 раз
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
24.03.2014, 14:07  [ТС] #14
Цитата Сообщение от 0x10 Посмотреть сообщение
Что не запрещает создать несколько объектов
Динамически добавлять как? Класс библиотечный и по задумке саму библиотеку менять нельзя...например, Вы же не меняете стандартные библиотеки - это беспантово)
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
24.03.2014, 14:17 #15
Ой, я ж теперь могу ссылаться на официальный FAQ: http://isocpp.org/wiki/faq/coding-standards#global-vars

Добавлено через 3 минуты
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс библиотечный
Ок, и как такой библиотекой пользоваться?
Чтобы обращаться к методам WORLD, нужно его объявление. В данном случае объявление и определение невозможно разделить. Подключаем в два разных файла - и выхватываем ошибку линковки, потому что в двух единицах трансляции появляются глобальные объекты с одинаковыми именами.
0
24.03.2014, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 14:17
Привет! Вот еще темы с ответами:

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

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

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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