720________________________________                   Глава 12

class MyClass : public Classi, Class2
(

} MC, MC10[10], *Pmc;

Если создается динамически размещаемый объект класса (см. главу 11 раз-
дел 11.9), то это делается операцией new. Например:

MyClass *PMC = new MyClass;

или

MyClass *PMC1 = new MyClass(3);

Эти операторы создают где-то в динамически распределяемой области памяти
сами объекты и создают указатели на них — переменные РМС и РМС1.

Создание объектов класса простым объявлением переменных возможно толь-
ко в случае, если среди предков вашего класса нет классов библиотеки компонен-
тов C++Builder. Если же такие предки есть, то создание указателя на объект этого
класса возможно только операцией new. Например, если класс объявлен так:

class MyClass2 : public TObject
(

то создание указателя на объект этого класса может осуществляться оператором

MyClass2 *Р2 = new MyClass2;

12.13.2 Функции — элементы, дружественные функции,
константные функции

Поля данных, исходя из принципа инкапсуляции (см. главу 1 раздел 1.2).
всегда должны быть защищены от несанкционированного доступа. Доступ к НИУ.
как правило, должен осуществляться только через функции, включающие методь:

чтения и записи полей. В этих функциях должна осуществляться проверка дан
ных чтобы не записать случайно в поля неверные данные или чтобы не допустит;

их неверной трактовки.

Поэтому данные всегда целесообразно объявлять в разделе private — закрь:

том разделе класса. В редких случаях их можно помещать в protected — защи
щенном разделе класса, чтобы возможные потомки данного класса имели к ни'.:

доступ.

Хороший стиль программирования

Как правило, делайте данные — элементы класса защищенными, снабжая их при необход/
мости открытыми функциями чтения и записи. Функции записи позволят вам проверять за
писываемые данные и обеспечивать тем самым непротиворечивость данных. А функць";'
чтения позволят вам не переписывать программу, даже если вы решили изменить что-то Б
типе, способах хранения и размещения данных в классе.

Приведем пример. Пусть класс имеет следующее объявление:

class MyClass

{

public:

void SetA(int);   // функция записи

int GetA(void);   // функция чтения
private:

int FA;

double B, C;

i •