Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Class CRectangle




Class C

Class CRectangle

{ private:

int Left, Top, Right, Bottom;

public:

void Draw();

void SetCoord(int L, int T, int R, int B);

void GetCoord(int *L, int *T, int *R, int *B)

//Два конструктора в одном классе

CRectangle(int L, int T, int R, int B);

CRectangle();

}

 

Использование перегружаемых конструкторов:

void main()

{ CRectangle Rect1(25,25,100,100);

CRectangle Rect2;

Rect1.Draw();

}

Если класс имеет конструктор, то компилятор не генерирует конструктор по умолчанию.

 

Инициализация данных в конструкторе

Конструктор класса CRectangle инициализирует данные, используя оператор присваивания. Однако определенным типам данных, особенно const и ссылкам, не могут быть присвоены значения. Для решения этой проблемы С++ предоставляет специальный конструктор, который называется списком инициализации. Он позволяет инициализировать один или более элементов данных (а не присвоить им значения).

 

 

Список инициализации данных помещается непосредственно после списка параметров в определении класса. Он содержит ‘: ’ с последующими инициализаторами, отделенными друг от друга запятыми. Инициализатор содержит имя элемента данных с последующим начальным значением в ():

 

Имя_класса(Список_параметров):

Инициализатор(Нач.знач.),….

{ Код Конструктора}

 

Пример:

{ private:

int N;

const int CInt;

int &RInt;

public:

C(int P): N(P), CInt(5), RInt(N)

{// Код конструктора }

}

Использование:

C CObject(0);

Создается объект с параметрами: N=0, CInt=5, &RInt=N

 

Объекты const и методы const

Добавление const в определении объекта класса означает, что вы не можете изменить значение любых компонент данного класса.

Пример:

const CRectangle Rect(25,25,100,100);

// установка значений только один раз при

// инициализации

int L, T, R, B;

Rect.GetCoord(&L, &T, &R, &B);

 

Поскольку обычный метод класса может изменять значение данных, компилятор генерирует ошибку при вызове метода объекта, объявленного как const.

Чтобы иметь возможность вызвать GetCoord для объекта const, нужно включить ключевое слово const в определение функции.

{ // ****

void GetCoord() const

{

// *****

}

}

Ключевое слово const означает, что функция не может изменять данные. Можно объявить как const любой метод, который не изменяет данные, чтобы пользователь класса мог свободно вызвать метод для объекта const.

 

Инициализация объектов – компонентов класса

Элементы данных, представляющие собой объекты одного класса, встроенные в объект другого класса, называются объектами-компонентами класса.

Инициализировать такой объект можно, передавая требуемые параметры в конструктор объекта в списке инициализации конструктора компонента, содержащего класс.

Например, класс CO2 содержит объект-компонент класса CO1, который инициализируется конструктором CO2:




Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 633; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.