- •Пространство имен.
- •Представление целых чисел
- •Определение переменных
- •Особенности использования некоторых типов данных: переполнение регистров переменных
- •Базовые конструкции структурного программирования
- •Условный оператор if
- •Ветвление процесса выполнения программ
- •Тема: Указатели и ссылки
- •Адреса переменных. Оператор взятия адреса
- •Указатели
- •Динамически распределяемая память
- •Указатели на объекты
- •Выделяют два основных отличия между статическими и динамическими объектами.
- •Перегрузка функций
- •Значения параметров функции, используемые по умолчанию
- •Определение массива
- •“Sdjdkjdhkfsdjhvm,c,bnmsierhoerhsdklfhbnasmbf”; //правильно Пустая строка записывается “ ” и имеет тип const char[1]. Использование датчика случайных чисел для формирования массива
- •Конструкторы и деструкторы
Конструкторы и деструкторы
Переменные-члены класса не могут получить начальные значения в определении класса, но, как и обычные переменные должны быть инициализированы. Для этой цели и служит конструктор.
Для конструктора всегда выполняются следующие правила:
конструктор никогда не вызывается явно, а по своему назначению используется в основном для инициализации полей данных при создании объекта;
конструктор автоматически вызывается при создании объекта класса;
имя конструктора совпадает с именем класса;
от других собственных функций класса конструктор отличается тем, что не имеет возвращаемого значения (даже типа void) – результатом выполнения конструктора является объект;
конструктор может иметь параметры, а, следовательно, в классе можно определить несколько конструкторов;
конструктор объекта можно не объявлять, компилятор сам снабдит такой объект стандартными конструктором (и деструктором), стандартный конструктор не принимает аргументов и (вместе со стандартным деструктором) ничего не делает.
важно помнить, что при наличии конструктора, созданного программистом, компилятор не будет создавать свой, но если созданный конструктор получает в виде параметра какое-либо значение, а при инициализации объекта оно не передается, то произойдет ошибка компиляции.
Объявив конструктор необходимо объявить и деструктор. Деструкторы удаляют из памяти отработавшие объекты и освобождают выделенную для них память. Правила деструктора:
деструктору присваивается имя класса с символом тильды «~» впереди;
деструкторы не имеет параметров (не принимают аргументов) и не возвращают значений;
должен быть открытым (public) методом;
никогда не вызывается явно, вызывается автоматически для каждого объекта при выходе из области видимости объекта;
если деструктор не определен в классе явно, то он создается компилятором автоматически, по умолчанию освобождая память, занимаемую объектом.
#include <iostream>
class Car
{
public:
Car(unsigned int initialYear);
~Car();
unsigned int GetYear( );
void SetYear (unsigned int Year);
void Start( );
private:
unsigned int itsYear;
};
using namespace std;
Car::Car(unsigned int initialYear)
{
itsYear=initialYear;
}
Car::~Car ( ) { }
int unsigned Car::GetYear ( )
{
return itsYear;
}
void Car::SetYear (unsigned int Year)
{
itsYear=Year;
}
void Car::Start ()
{
cout<<"Forward!!!\n";
}
int main( )
{
unsigned int Old;
Car myZaparozec(19);
Old=myZaparozec.GetYear ( );
cout<<"The year back to my machine was "<<Old<<" years"<<endl;
myZaparozec.SetYear (20);
Old=myZaparozec.GetYear ( );
cout<<"Now to my machine "<<Old<<" years"<<endl;
myZaparozec.Start ();
return 0;
}
1 С++ не имеет встроенных средств ввода/вывода подобно другим языкам. Даже простейший исходный текст программы располагается в нескольких файлах: например, файл iostream является заголовочным файлом, в котором на языке С++ содержится описание стандартных средств ввода/вывода, в частности консольных потоков cin и cout. Эти потоки в терминах С++ являются объектами классов.
2 Символ << называют так же операцией помещения в поток.
3
4 В прототипе функции имена параметров не обязательны и имеет право существовать следующий вариант объявления: long myFunc (int = 21);