Да я вижу, как ты их писал. Сочувствую человеку, который их суппортит.Сионист писал(а):Как же я их писал то?
Как запретить повторное использование конструктора?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я и не сомневался. Про исключения у Шилдта ты тоже не распарсил. И не нужно говорить, что они там не были описаны. Ты просто не всё понимаешь, когда читаешьСионист писал(а):Не распарсил.

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Я не пытаюсь казаться, тем более важным. И неучи кандидатские не только не защищают, но даже поступить в аспирантуру не способны. А по поводу показа,Romeo писал(а):Уууу, вот тут мне уже нечего добавить. Ну-ка покажи мне, как по-твоему должен выглядеть настоящий синглтон в твоём понимании. Говоришь особенности реализации? Покажи мне свою реализацию.
Сионист, ты просто неуч, который пытается казаться важным и умным
1. Возможен язык, на котором будет возможна такая реализая:
Код: Выделить всё
class singelton
{
private:
static singelton *first;
public:
singelton ()
{
if (first==nullptr)
{
first=this;
}
this=first;
}
singelton (const singelton &Original)
{
this=&Original;
}
...
};
1.1. Все объекты разделяют одну память, за счёт чего все их поля и имеют совпадающие значения, а любая операция над одним объектом оказывается операцией над всеми.
1.2. Объекты нельзя создавать динамически.
Я не берусь утверждать, что такой язык был бы лучше реального c++, но такой язык в принципе возможен.
На обджект паскале возможен класс, весь интерфейс которого будет построен на методах, конструкторах, деструкторе и свойствах, которые с виду вроде бы имеют интерфейс полей, но на самом деле за ними скрываются пары методов. Если при данной особенности языка поддерживать ещё private классы-члены и static private поля, то можно класс сделать оболочечным, а в методы доступа к свойствам завернуть обращение к единственному static private полю, которое и будет настоящим объектом.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Описаны. Но очень кратко и очень туманно. Понятно только каким словом бросать и как ловить одним catch все исключения.Romeo писал(а):Я и не сомневался. Про исключения у Шилдта ты тоже не распарсил. И не нужно говорить, что они там не были описаны. Ты просто не всё понимаешь, когда читаешь![]()
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Если кандидат, то тогда всё понятно. Теоретик, не разбирающийся в практике. Я таких видел не одного, к сожалению. Отказывал им на собеседовании...
По поводу реализации. Это не синглтон по определению, так как можно создать множество объектов этого класса.
На счёт "возможен" язык, я так и не понял. Ты сейчас пишешь на С++ или на придуманном языке? При чём тут вообще какой-то там язык, который ты изобрёл на скорую руку? Проект у тебя написан на С++ и говорили мы везде в контексте С++. Так что приведи мне честный сиглтон без скрытых конструкторов. Если не можешь привести такой пример, то просто признай это, и я покажу тебе, кандидату-неучу, как должен выглядеть настоящий синглтон на С++. Более того, смею заметить, что архитектурно он будет выглядеть точно так же и на других современных языках программирования, а именно на C# и на Java.
По поводу реализации. Это не синглтон по определению, так как можно создать множество объектов этого класса.
На счёт "возможен" язык, я так и не понял. Ты сейчас пишешь на С++ или на придуманном языке? При чём тут вообще какой-то там язык, который ты изобрёл на скорую руку? Проект у тебя написан на С++ и говорили мы везде в контексте С++. Так что приведи мне честный сиглтон без скрытых конструкторов. Если не можешь привести такой пример, то просто признай это, и я покажу тебе, кандидату-неучу, как должен выглядеть настоящий синглтон на С++. Более того, смею заметить, что архитектурно он будет выглядеть точно так же и на других современных языках программирования, а именно на C# и на Java.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Это не множество по определению. Хоть в том, хоть в другом случае. В одном случае имён объекта может быть сколько угодно, но они все - синонимы друг друга, то есть в принципе множество будет ссылок, а объект то один. В другом случае множество будет оболочечных объектов, в которые завёрнут один и тот же объект-поле. Множества целевых объектов нет ни в том, ни в другом случае.Romeo писал(а):По поводу реализации. Это не синглтон по определению, так как можно создать множество объектов этого класса.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Гипотетический язык при том, что сингилтон - не специфически c++-ная языковая конструкция, а шаблон проектирования, имеющий смысл во всём ООП. И если реализация даже вытекает из особенностей языка, это ещё не означает, что сам паттерн требует именно такой реализации. Можно вообще включить слово single в язык и разрешить такой синтаксис:Romeo писал(а):На счёт "возможен" язык, я так и не понял. Ты сейчас пишешь на С++ или на придуманном языке? При чём тут вообще какой-то там язык, который ты изобрёл на скорую руку? Проект у тебя написан на С++ и говорили мы везде в контексте С++. Так что приведи мне честный сиглтон без скрытых конструкторов. Если не можешь привести такой пример, то просто признай это, и я покажу тебе, кандидату-неучу, как должен выглядеть настоящий синглтон на С++. Более того, смею заметить, что архитектурно он будет выглядеть точно так же и на других современных языках программирования, а именно на C# и на Java.
Код: Выделить всё
class A
{
public:
A () single;
};
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Блин, да при чём тут другой язык программирования? Мы ведь говорили о С++. И проект у тебя на С++ написан. Или ты собираешь в него вставить класс, написанный на другом языке? Ну хватит уже заниматься словоблудием.
Хорошо, не хочешь признавать что был не прав, Бог с ним. Для тех, кто тоже читает эту тему и кому будет интересно, пишу, как должен выглядеть синглтон на С++. А ты не читай этого. Ты на своём языке пиши свой синглтон, потом пиши для этого языка компилятор, а потом вставляй это всё дело в свой проект, написанный на С++, авось заработает.
Хорошо, не хочешь признавать что был не прав, Бог с ним. Для тех, кто тоже читает эту тему и кому будет интересно, пишу, как должен выглядеть синглтон на С++. А ты не читай этого. Ты на своём языке пиши свой синглтон, потом пиши для этого языка компилятор, а потом вставляй это всё дело в свой проект, написанный на С++, авось заработает.
Код: Выделить всё
class Singleton
{
public:
static Singleton* GetInstance()
{
if (m_pSingle == NULL)
{
m_pSinge = new Singleton();
}
return m_pSingle;
}
void DoSomething() { ... }
// some non-static methods
private:
// some non-static fields
private:
Singletone()
{
// some initialization
}
static Singleton* m_pSingle;
};
void main()
{
Singleton::GetInstance()->DoSomething();
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
По-Вашему сингилтон - лично моё изобретение в рамках конкретного проекта?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
По Вашей же логике объекта здесь нет вообще.Romeo писал(а):Код: Выделить всё
class Singleton { public: static Singleton* GetInstance() { if (m_pSingle == NULL) { m_pSinge = new Singleton(); } return m_pSingle; } void DoSomething() { ... } // some non-static methods private: // some non-static fields private: Singletone() { // some initialization } static Singleton* m_pSingle; }; void main() { Singleton::GetInstance()->DoSomething(); }
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.