Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции программирование / polevoy_cpp_2012_spring_lecture_03

.pdf
Скачиваний:
25
Добавлен:
20.04.2015
Размер:
110.89 Кб
Скачать

Константные методы (пример)

class FixedArr

{

public:

//…

int size() const;

//…

};

int

FixedArr::size() const

{

//…

25.02.2012

cppNewb.ru

31

Члены-ссылки

сильно связанные данные (классы)

инициализируются в списке инициализации

блокируют создание умолчательного конструктора

25.02.2012

cppNewb.ru

32

Ссылочные члены (поля)

class Point

{

public:

Point(Axes& axes); private:

Axes& m_axes;

///…

};

Point::Point(Axes& axes) : m_axes(axes)

///…

25.02.2012

cppNewb.ru

33

Инвариант класса

“ всегда” истинное логическое утверждение (члены)

выполняется в начале и конце метода

может нарушаться внутри метода

25.02.2012

cppNewb.ru

34

Локальная переменная

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

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

25.02.2012

cppNewb.ru

35

Умолчательный конструктор

конструктор без аргументов

генерируется автоматически, если нет объявления других конструкторов

вызывается

создание переменной без использования инициализаторов

создание элемента массива

25.02.2012

cppNewb.ru

36

Копирование объектов

инициализация через копирование

присваивание

передача аргументов и возврат

значений

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

25.02.2012

cppNewb.ru

37

Класс с указателями (пример)

class String

{

public:

String()

: m_pStr(new char[SIZE_DEF])

{}

~String()

{

delete[] m_pStr;

}

private:

char m_pStr;

};

25.02.2012

cppNewb.ru

38

Проблемы копирования (пример)

CString str1;

///Копирующая инициализация – проблема! CString str2 = str1;

CString str3;

///Копирующее присваивание – проблема! str3 = str1;

25.02.2012

cppNewb.ru

39

Копирование и управление ресурсами

почленное копирование неправильно для классов, реализующих управление ресурсами (конструктор/деструктор)

необходимо использовать пользовательский конструктор копирования и оператор присваивания

25.02.2012

cppNewb.ru

40