Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 17:04   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию static обьект

Всем доброго дня !

Скажите пожалуйста в каком случае применяются статические обьекты.?

Код:
class A

{
	int x;

	static A c;

public:

	A(int h) : x(h) {}

	A() : x(0) {}

	~A() {}

	static A & GF() 

	{
		return c;
	}

	int hjhj() const {return x;}
};

 A A :: c ;

Последний раз редактировалось RAFA91; 27.05.2015 в 17:15.
RAFA91 вне форума Ответить с цитированием
Старый 27.05.2015, 17:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

https://msdn.microsoft.com/ru-ru/library/s1sb61xd.aspx

Википедия:
Цитата:
static — статическая переменная (локальная).
1) Если static - внутри функции. Статические переменные имеют такую же область действия, как локальные(автоматические), но они не исчезают, когда содержащая их функция закончит свою работу. Их значения сохраняются от одного вызова функции до другого.
2) static вне функции имеет другое значение.
Достаточно информации?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2015, 17:47   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

пока как-то мутновато.

Код:

сlass A

{
    public:

     static int x;

..............................

..............................

}
в данном случае к пер. х я могу обратится из любой области

используя A :: x обьектов для этого мне не надо.

___________________________________ ______________

меня больше интерисует применение стат. обьектов в классе .

зачем этот геморой на мою голову ?

подскажите практическое применение. любой пример поможет это понять.
RAFA91 вне форума Ответить с цитированием
Старый 27.05.2015, 18:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Статический метод\свойство ты можешь вызывать из класса не создавая его обьект.

Грубо приведу пример (он не действителен)
Чтоб получить случайное число нужно писать:
Код:
Random r= new Random();
...=r.Next();
Если бы класс имел статический метод Next, создавать обьект бы не пришлось.
Код:
...=Random.Next();
Во-первых кода меньше, во-вторых распределения в памяти нет (в куче).
Как еще обьяснить не знаю...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2015, 19:06   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Для подсчета ссылок/объектов, для некоторых реализаций сингелтонов, для фабрик...
p51x вне форума Ответить с цитированием
Старый 27.05.2015, 19:44   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Если как в твоем примере, то чтобы все экземпляры класса могли обращаться к одному единственному объекту "c".

Смотри более адекватный пример (шаблон singleton):
Код:
// simpleclass.h
class SimpleClass {
public:
  static SimpleClass* instance();
//...
private:
  static SimpleClass* m_pinstance;
};
 
// simpleclass.cpp
SimpleClass* SimpleClass::m_pinstance = 0;
 
SimpleClass* SimpleClass::instance() {
  if(m_pinstance == 0)
     m_pinstance = new SimpleClass;
  return m_pinstance;
}
Класс храни указатель на экземпляр этого же класса. При этом объект статический, поэтому любой объект класса SimpleClass может получить к нему доступ. По ссылке более подробное описание и еще забавная фича со статическим объектом внутри функции описан.
rrrFer вне форума Ответить с цитированием
Старый 28.05.2015, 12:35   #7
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

всем Большое спасибо за ответы !

малость начал соображать.
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обьект в динамике RAFA91 Общие вопросы C/C++ 12 28.11.2015 21:17
static и non-static context kos1nus Общие вопросы по Java, Java SE, Kotlin 1 17.07.2013 00:10
Enum в обьект. vjmap C# (си шарп) 2 08.10.2011 11:16
обьект в обьект... Olejik Общие вопросы по Java, Java SE, Kotlin 6 22.03.2010 22:23
Не могу создать обьект mrandrey Общие вопросы Delphi 6 04.06.2007 16:04