• Авторизация


Статические члены и методы класса 24-06-2009 16:10 к комментариям - к полной версии - понравилось!


Статические и нестатические члены класса

Спецификатор класса памяти  static может быть использован в объявлении данных и методов класса. Такие элементы называются статическими и имеют свойства, отличные от свойств нестатических элементов.
В случае обычных, нестатических элементов данных каждый объект содержит отдельную копию элемента. В отличие от этого, для статических элементов существует только одна копия, а доступ к ней может выполняться без ссылки на конкретный объект класса. Главное назначение статических элементов данных состоит в том, чтобы отслеживать данные, общие для всех объектов класса (например, число созданных объектов). Статические методы класса обычно применяются для того, чтобы получить доступ к закрытым (private, protected) статическим элементам данных. Если count – статический элемент данных класса Aclass, то на него можно ссылаться при помощи полного (квалифицированного имени)

Aclass::count
Даже если ни один объект класса Aclass еще не создан. Однако, сохраняется и обычный способ доступа
Aclass a;
a.count;
Aclass *b;
b->count;
 Объявление статических членов-данных класса имеет одну важную особенность. Так как при описании класса, память для данных не выделяется, такие члены сначала должны быть объявлены внутри класса, а затем дополнительно инициализированы вне его, например:

class Aclass
{
 static int count;
 …
};
int Aclass::count=0;
Пример:
#include <iostream.h>
class Aclass
{
 int n;
 public:
 static int count;
 Aclass (int c=0)  
 {  
 n = c;  
 }
};
int Aclass::count=0;
void main()
{
 cout<< Aclass::count<<endl;
 Aclass::count++;
 cout<< Aclass::count<<endl;
}

#include <iostream.h>
class Aclass
{
 int n;
 static int count;
 public:
 Aclass (int c=0)  
 {  
 n = c;  
 count++;
 }
 static int Getcount();
};
int Aclass::Getcount()
{
 return count;
}
int Aclass::count=0;
void main()
{
 cout<< Aclass::Getcount()<<endl;
 Aclass a;
 Aclass b;
 cout<<Aclass::Getcount()<<endl;
 cout<<a.Getcount()<<endl;
 cout<<b.Getcount()<<endl;
}
Пример использования статического метода:

class A
{
private:
 int x;
public:
 A()
 {
 x=0;
 }
 A(int nx)
 {
 x=nx;
 }
 void Show()
 {
 cout<<x<<endl;
 }
 static void WMsg()
 {
 cout<<"Warning!!!"<<endl;
 }
};
void main()
{
 A::WMsg();
}

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Статические члены и методы класса | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»