Опишите синтаксис конструктора. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Опишите синтаксис конструктора.



Конструктор – это метод класса, выполняющийся автоматически в момент создания объекта. Используется для выделения дин.области памяти либо задания начального значения полей класса.

class <название класса>
{

<название класса> ()[:<…>]{<.>}; // конструктор по умолчанию
<название класса> (<параметры (через запятую) + параметры по умолчанию>)[:<…>]{<.>} //синтаксис конструктора с параметрами
<название класса> (const <название класса> &<название переменной>)[:<…>]{<.>} //конструктор копирования
~<название класса> (){<.>} //деструктор

}

Об особенностях… В синтаксисе выше используется краткое обозначение [:<…>]{<…>}, которое можно рассматривать как:

<.> - тело конструктора / деструктора.

[:<…>] – эта часть может отсутствовать, если она есть, то её синтаксис: <имя переменной 1> (<значение переменной 1>), <имя переменной 2> (<значение переменной 2>), <…>

В данной части происходит инициализация переменных.

class A

{ public:

A(список параметров);

}

A:: A(список параметров) { }

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

Укажите способы доступа к полям и методам класса.

. - позволяет ссылке на объект получить доступ к полю структуры (класса).

Пример:
struct strct{
int info;
};
void main(){
strct x;
x.info=7;
}

-> - позволяет ссылке на объект получить доступ к полю структуры (класса).
struct strct{
int info;
};
void main(){
strct *x=new strct;
x->info=7;
}

Зачем нужны методы с модификатором const? и как они используются.

Когда метод не изменяет поля объекта, для которого он вызван, желательно в конце написать const

void func () const { …}

пример из перегрузки операторов:

inline Chislo Chislo::operator + (const Chislo & c) const

{

Chislo m;

m.mi = mi + c.mi;

m.ma = ma + c.ma;

return m;}

Как определить константный объект? Какие методы доступа применимы к нему?

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

int main()

{ const MyClass obj;

… }

Какой параметр скрыто передается методу класса? Опишите использование ключевого слова this.

Функции-члены класса (за исключением статических) получают в дополнение к списку параметров еще и неявный указатель this - адрес "своего" объекта, того, с которым они вызваны и поля которого они должны обрабатывать.

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

class my

{ int a;

public:

my(могут быть параметры); //конструктор- без типа, совпадает с именем класса

void b() { this->a=0; }

};

 

Можно ли построить класс без конструктора? Как в этом случае описать объекты класса?

Если в классе не определить конструктор (хотя бы один), тогда компилятор создаст конструктор по умолчанию. Можно будет дать возможность пользователю изменять переменные самостоятельно, или же определить функции, которые будут изменять значения переменных.

Определить конструктор в закрытой части можно. В этом случае доступ к конструктору может получить только дружественный класс, который должен быть объявлен как дружественный в объявлении данного класса.

Когда вызывается конструктор? Наследуется ли конструктор? Укажите синтаксис списка инициализаций при вызове конструктора. Можно ли определить конструктор в закрытой секции? Можно ли явно вызвать конструктор?

Конструктор вызывается в момент создания объекта. Конструктор не наследуется.

class my

{ const int a,b,c;

public:

my(могут быть параметры): a(5),b(3),c(4){};

};

Определить конструктор в закрытой части можно. Оно компилится. Вот тока ни один объект создать не получится.

Нет, вызвать явно конструктор нельзя.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.89.163.120 (0.088 с.)