Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объявление классов и их членовСодержание книги Поиск на нашем сайте
Формат объявления класса имеет следующий вид:
[модификатор] class [<имя_класса>] [: <список_родителей>] { <тело_класса> } [<объявления_переменных>];
где: – модификатор – модификатор доступа к классу; – class – зарезервированное ключевое слово; – <имя_класса> – допустимый идентификатор; – <список_родителей> – список родительских классов, от которых этот класс будет наследовать члены; – <тело_класса> – блок операторов, содержащий объявления членов класса. – <объявления_переменных> – обявления переменных (объектов, экземпляров этого класса) располагаются после закрывающейся фигурной скобки тела класса. Если в конце объявления класса указано объявление переменных, то допустимо не указывать имя класса. Эти объявления могут содержать инициализаторы открытых членов класса.
Таблица 14.1. Модификаторы доступа к классу и его членам
Объявить переменную можно, используя название класса в качестве типа данных.
<Имя_класса> <Название_переменной>;
Пример. Объявление класса Point с открытыми членами с одновременным и отдельным обявлением переменных point1 и point2:
c lass Point { public: // Указание на открытость членов класса int x; int y; } point A; // Объявление переменной (объекта) Point point B; // Объявление переменной (объекта) int main() { pointA.x = 10; pointA.y = 20; // Инициализация pointB.x = 15; pointB.y = 10; // переменных - членов // Вывод значений переменных - членов System::Console::WriteLine("A({0},{1})", pointA.x, pointA.y); System::Console::WriteLine("B({0},{1})", pointB.x, pointB.y); Console::ReadLine();
Пример 14.1. Использование объектов одного класса внутри другого.
class Rect { // Класс "Прямоугольник" public: Point top _ left; // Координаты левого верхнего и Point bottom _ right; // правого нижнего углов прямоугольника }; int main () { Rect rect; rect. top _ left. x = 5; // rect. top _ left. y = 20; // Значения координат rect. bottom _ right. x = 30; // углов прямоугольника rect.bottom_right.y = 5; // Console::WriteLine("Rectangle ABCD: B({0},{1}); D({2},{3})", rect.top_left.x, rect.top_left.y, rect.bottom_right.x, rect.bottom_right.y); // Вывод: Rectangle ABCD: B(5,20); D(30,5) Console::ReadLine(); return 0; }
Ссылочные классы и классы значений. Пример 14.2. Использование ссылочных классов и классов значений.
#include "stdafx.h" ref class MyRefClass { // Определение ссылочного класса public: int i; }; value class MyValClass { // Определение класса значения public: int k; }; int main() { MyRefClass^ m = gcnew MyRefClass; // О бъявление экземпляра класса m -> i = 21; MyRefClass ^ n = m; // Копирование объекта по ссылке System::Console::WriteLine("n = {0}", n->i); // Вывод: n = 21 int ti = m -> i; // Копирование значения поля System::Console::WriteLine("ti = {0}", ti); // Вывод: ti = 21 MyValClass^ x = gcnew MyValClass; // Объявление экземпляра класса x -> k = 13; MyValClass ^ y = x; // Копирование объекта по значению System::Console::WriteLine("y = {0}", y->k); // Вывод: y = 13 MyValClass z; // Объявление экземпляра класса int tk = z. k; // Копирование значения поля System::Console::WriteLine("tk = {0}", tk); // Вывод: tk = 0 System::Console::ReadLine(); return 0; }
Определение полей Пример 14.3. Объявление полей класса и доступ к ним.
#include "stdafx.h" class SampleClass { double fieldA; // Объявление закрытого поля public: int fieldB; // Объявление открытого поля }; int main() { SampleClass sc; // Создание объекта (экземпляра класса) sc.fieldB = 21; // Присваиванивание значения открытому полю System::Console::WriteLine("sc.fieldB = {0}", sc.fieldB); // Вывод: sc.fieldB = 21 System::Console::ReadLine(); return 0; }
Битовые поля в классах. Объявление битового поля имеет следующий формат:
<Тнп данных> [<Название поля>]: <Длнна в бнтах>;
Пример объявления класса с битовыми полями
class Status { public: unsigned : 3; unsigned a: 1; unsigned b: 1; unsigned с: 1; } status1; //... status1.а = 1; status1.b = 0; status1.с = 1;
Определение свойств Пример 14.4. Определение и использование свойства.
#include "stdafx.h" using namespace System; ref class SampleClass { // Определение класса private: int field; // Объявление закрытого поля public: property int p_field { // Определение свойства int get() { return field; // Возвращение значения поля } void set(int value) { if (value >= 0 && value <= 200) field = value; // Сохранение значения в поле } } }; int main() { SampleClass^ sc = gcnew SampleClass(); // Создание объекта Console::WriteLine(sc->p_field); // Вывод: 0 sc->p_field = 21; // Присваивание выполнено Console::WriteLine(sc->p_field); // Вывод: 21 sc->p_field = 201; // Присваивание не выполнено Console::WriteLine(sc->p_field); // Вывод: 21 Console::ReadLine(); return 0; }
Свойства, доступные только для чтения и только для записи. Пример 14.5. Определение класса T со свойством Temperature, которое только возвращает значение закрытого поля temp из внутреннего состояния объекта. В программе создается объект (objT, экземпляр класса T) и выводится на экран значение его свойства Temperature.
#include "stdafx.h" using namespace System; ref class T { // Определение класса private: int temp; // Объявление закрытого поля public: property int Temperature { // Определение свойства для чтения int get() { return temp; // Возвращение значения поля } } }; int main () { // Точка входа в программу T ^ objT = gcnew T (); // Создание экземпляра класса (объекта) // Вывод значения температуры (свойства) Console:: WriteLine (" T = {0}°", objT -> Temperature); // Вывод: T = 0° Console::ReadLine(); return 0; }
|
||||||||||||||||
|
Последнее изменение этой страницы: 2019-05-20; просмотров: 203; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |