class (C++)
Ключевое слово class
объявляет тип класса или определяет объект типа класса.
Синтаксис
[template-spec]
class [ms-decl-spec] [tag [: base-list ]]
{
member-list
} [declarators];
[ class ] tag declarators;
Параметры
спецификация шаблона
Необязательные спецификации шаблона. Дополнительные сведения см. в разделе "Шаблоны".
class
ключевое слово class
;
ms-decl-spec
Необязательная спецификация класса хранения. Дополнительные сведения см. в __declspec ключевое слово.
tag
Имя типа, присваиваемое классу. Этот параметр tag становится зарезервированным ключевым словом в области класса. Тег является необязательным. Если он опущен, определяется анонимный класс. Дополнительные сведения см. в разделе "Типы анонимных классов".
base-list
Необязательный список классов или структур, от которых этот класс будет наследовать члены. Дополнительные сведения см. в разделе "Базовые классы ". Перед каждым базовым классом или именем структуры может предшествовать описатель доступа (общедоступный, частный, защищенный) и виртуальный ключевое слово. Дополнительные сведения см. в таблице доступа к члену в разделе "Управление доступом к членам класса".
список участников
Список членов класса. Дополнительные сведения см. в обзоре члена класса.
declarators
Список деклараторов, в котором указываются имена одного или нескольких экземпляров типа класса. Деклараторы могут включать списки инициализаторов, если все члены данных класса public
. Это более распространено в структурах, члены данных которых по public
умолчанию, чем в классах. Дополнительные сведения см. в обзоре деклараторов .
Замечания
Дополнительные сведения о классах в целом см. в следующих разделах:
Сведения об управляемых классах и структурых в C++/CLI и C++/CX см. в разделе "Классы и структуры"
Пример
// class.cpp
// compile with: /EHsc
// Example of the class keyword
// Exhibits polymorphism/virtual functions.
#include <iostream>
#include <string>
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;
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по