Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
bezimec
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 9
1

Создание объекта класса

06.02.2019, 09:08. Просмотров 222. Ответов 4
Метки нет (Все метки)

Есть такой класс:
C++
1
2
3
4
5
class CSomeClass
{
public:
    void SomeMethod();
};
И вот как можно создать объект этого класса:

1.
C++
1
CSomeClass object;
2.
C++
1
CSomeClass* pObject = new CSomeClass(); // или через unique_ptr, без разницы
3.
C++
1
2
3
4
5
CSomeClass* Instance()
{
    static CSomeClass object;
    return &object;
}
С первым примером все ясно, со вторым тоже, а вот с третьим мне не понятно. Видел в некоторых исходниках, что разработчики прибегали именно к созданию статичного метода, который создает статичный объект этого класса и возвращает его адрес. Но я не понимаю, почему нельзя было просто создать объект как в первом примере. Может быть есть какая-то весомая разница? И вообще, как лучше создать объект: объявить его в глобальной области видимости как на первом примере или создать функцию как в третьем?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 09:08
Ответы с готовыми решениями:

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin>>a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у...

Создание объекта класса в методе этого же класса
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это...

Создание объекта класса
Как можно создать объект класса вне функции int main()? Допустим у меня есть 4 файла myclas.h...

Создание объекта класса
Создал свой класс с именем и фамилией, не могу создать объект этого класса, при проверке на ошибки...

4
Renji
2513 / 1719 / 515
Регистрация: 05.06.2014
Сообщений: 4,981
06.02.2019, 09:43 2
Цитата Сообщение от bezimec Посмотреть сообщение
Но я не понимаю, почему нельзя было просто создать объект как в первом примере.
Потому что если первый пример сунуть в .h хедер, а хедер заинклудить в два разных cpp файла, то компилятор будет ругаться на множественное объявление переменной.
0
bezimec
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 9
06.02.2019, 10:27  [ТС] 3
Цитата Сообщение от Renji Посмотреть сообщение
Потому что если первый пример сунуть в .h хедер, а хедер заинклудить в два разных cpp файла, то компилятор будет ругаться на множественное объявление переменной.
ну для первого примера в основном создают объект в .cpp файле и суют extern в .h
0
DrOffset
10927 / 5823 / 1435
Регистрация: 30.01.2014
Сообщений: 9,366
06.02.2019, 11:16 4
Цитата Сообщение от bezimec Посмотреть сообщение
С первым примером все ясно, со вторым тоже, а вот с третьим мне не понятно.
Синглтон
1
Azazel-San
Mental handicap
1082 / 540 / 154
Регистрация: 24.11.2015
Сообщений: 2,195
Завершенные тесты: 1
06.02.2019, 11:54 5
Цитата Сообщение от bezimec Посмотреть сообщение
с третьим мне не понятно
Добавлю Lazy initialization
1
06.02.2019, 11:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 11:54

Создание объекта класса
Здравствуйте, подскажите пожалуйста в чем разница между Test t(блаблабла); и Test *t = new...

Создание объекта класса из потока
Всем привет. Пишу простенькую игрушку, понадобилось для нее подобие движка(сразу оговорюсь: для...

Создание объекта класса в switch
switch (c) {case 1: man a; break; Как создать объект класса в switch? switch не хочет и...


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

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

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