class (C++)
Ключевое слово class объявляет тип класса или определяет объект типа класса.
[template-spec] class [ms-decl-spec] [tag [: base-list ]]
{
member-list
} [declarators];
[ class ] tag declarators;
Параметры
template-spec
Необязательные спецификации шаблона. Дополнительные сведения см. в разделе Спецификации шаблонов.class
Ключевое слово class.ms-decl-spec
Необязательная спецификация класса хранения. Дополнительные сведения см. в разделе с описанием ключевого слова __declspec.tag
Имя типа, присваиваемое классу. Этот параметр tag становится зарезервированным ключевым словом в области класса. Тег является необязательным. Если он опущен, определяется анонимный класс. Дополнительные сведения см. в разделе Типы анонимных классов.base-list
Необязательный список классов или структур, от которых этот класс будет наследовать члены. Дополнительные сведения см. в разделе Базовые классы. Каждому имени базового класса или структуры может предшествовать спецификатор доступа (public, private, protected) и ключевое слово virtual. Дополнительные сведения см. в таблице членского доступа в разделе Управление доступом к членам класса.member-list
Список членов класса. Дополнительные сведения см. в разделе Члены класса.declarators
Список деклараторов, в котором указываются имена одного или нескольких экземпляров типа класса. Деклараторы могут содержать списки инициализаторов, если все данные-члены класса являются открытыми (public). Это чаще используется не в классах, а в структурах, чьи данные-члены имеют видимость по умолчанию public. Дополнительные сведения см. в разделе Общие сведения о деклараторах.
Заметки
Дополнительные сведения о классах в целом см. в следующих разделах:
Сведения об управляемых классах и структурах см. в разделе Классы и структуры.
Пример
// class.cpp
// compile with: /EHsc
// Example of the class keyword
// Exhibits polymorphism/virtual functions.
#include <iostream>
#include <string>
#define TRUE = 1
using namespace std;
class dog
{
public:
dog()
{
_legs = 4;
_bark = true;
}
void setDogSize(string dogSize)
{
_dogSize = dogSize;
}
virtual void setEars(string type) // virtual function
{
_earType = type;
}
private:
string _dogSize, _earType;
int _legs;
bool _bark;
};
class breed : public dog
{
public:
breed( string color, string size)
{
_color = color;
setDogSize(size);
}
string getColor()
{
return _color;
}
// virtual function redefined
void setEars(string length, string type)
{
_earLength = length;
_earType = type;
}
protected:
string _color, _earLength, _earType;
};
int main()
{
dog mongrel;
breed labrador("yellow", "large");
mongrel.setEars("pointy");
labrador.setEars("long", "floppy");
cout << "Cody is a " << labrador.getColor() << " labrador" << endl;
}