Чтение онлайн

на главную - закладки

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

// ...

virtual Square * clone const { return new Square(*this); }

// ...

};

5. Жучки: что неправильно в следующем программном коде?

void SomeFunction (Shape);

Shape * pRect = new Rectangle;

SomeFunction(*pRect);

Возможно, здесь все правильно. Функция SomeFunction ожидает получения объекта класса Shape. Вы передали ей объект класса Rectangle, произведенный от класса Shape. До тех пор пока вам не нужны никакие составные части класса Rectangle, такой подход

будет нормально работать. Если же вам понадобятся члены класса Rectangle, придется изменить объявление функции SomeFunction, чтобы она принимала указатель или ссылку на объект класса Rectangle,

6. Жучки: что неправильно в следующем программном коде?

class Shape

{

public:

Shape;

virtual ~ShapeO;

virtual Shape(const Shape&);

};

Нельзя объявить виртуальным конструктор-копировщик.

День 12

Контрольные вопросы 

1. Как обратиться к первому и последнему элементам массива SomeArray[25]?

SomeArray[0], SomeArray[24]

2. Как объявить многомерный массив?

Напишите набор индексов для каждого измерения. Например,

SomeArray[2][3][2] — это трехмерный массив. Первое измерение содержит два элемента, второе — три, а третье — два.

3. Выполните инициализацию элементов многомерного массива, созданного при ответе на вопрос 2.

SomeArray[2][3)[2] = { { {1,2},{3,4},<5,6} } , { {7,8},{9,10},{11,12} } };

4. Сколько элементов содержит массив SomeArray[i0][5][20]?

10x5x20=1 ООО

5. Каково максимальное число элементов, которые можно добавить в связанный список?

Не существует никакого фиксированного максимума. Это зависит от объема доступной памяти.

6. Можно ли в связанном списке использовать индексы?

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

7. Каким является последний символ в строке "Сергей — хороший парень"?

8. Концевой нулевой символ.

 Упражнения

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

int GameBoard[3][3];

2. Запишите программный код, инициализирующий значением 0 все элементы созданного перед этим массива.

int GameBoard[3][3] = { {0,0,0},{0,0,0},{0.0,0} }

3. Объявите класс узла Node, поддерживающего целые числа.

class Node

{

public:

Node ;

Node (int);

~Node:

void SetNext(Node * node) { itsNext = node; }

Node * GetNextO const { return itsNext; }

int GetVal const { return itsVal; }

void Insert(Node *);

void Display;

private:

int itsVal;

Node * itsNext;

};

4. Жучки:

что неправильно в следующей программе?

unsigned short SomeArray[5][4];

for (int i = 0; i<4; i++)

for (int j = 0; j<5; j++)

SomeArray[i][j] = i+j;

Массив SomeArray предназначен для хранения 5x4 элементов, но код инициализирует матрицу 4x5 элементов.

5. Жучки: что неправильно в следующей программе?

unsigned short SomeArray[5][4];

for (int i=0: i<=5; i++)

for (int j = 0; j<=4; j++)

SomeArray[i][j] = 0;

Вероятно, программист хотел написать i < 5, но написал вместо этого i <= 5.

Программа будет работать, когда i == 5 и j == 4, но в массиве SomeArray нет такого

элемента, как SomeArray[5][4].

День 13

Контрольные вопросы 

1. Что такое приведение типа объекта вниз?

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

2. Что такое v-ptr?

Указатель на виртуальную функцию v-ptr является элементом выполнения виртуальных функций. Каждый объект в классе, содержащем виртуальные функции, имеет указатель v-ptr, который ссылается на таблицу виртуальных функций для этого класса.

3. Предположим, для создания прямоугольника с закругленными углами используется класс RoundRect, произведенный от двух базовых классов — Rectangle и Circle, которые, в свою очередь, производятся от общего класса Shape. Как много объектов класса Shape создается при создании одного объекта класса RoundRect?

Если никакой класс не наследует использование ключевого слова virtual, то создаются два объекта класса Shape: один для класса RoundRect и один для класса Circle. Если же ключевое слово virtual используется для обоих классов, то создается только один общий объект класса Shape.

4. Если классы Horse (Лошадь) и Bird (Птица) виртуально наследуются от класса Animal

(Животное) как открытые, будут ли конструкторы этих классов инициализировать конструктор класса Animal? Если класс Pegasus (Пегас) наследуется сразу от двух классов, Horse и Bird, как в нем будет инициализироваться конструктор класса Animal?

Оба класса Horse и Bird инициализируют в своих конструкторах базовый класс Animal. Класс Pegasus делает то же самое, но когда создается объект класса Pegasus, инициализации класса Animal в производных классах Horse и Bird игнорируются.

Поделиться:
Популярные книги

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Теневой путь. Шаг в тень

Мазуров Дмитрий
1. Теневой путь
Фантастика:
фэнтези
6.71
рейтинг книги
Теневой путь. Шаг в тень

Идеальный мир для Демонолога 9

Сапфир Олег
9. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 9

Судья (Адвокат-2)

Константинов Андрей Дмитриевич
2. Бандитский Петербург
Детективы:
боевики
7.24
рейтинг книги
Судья (Адвокат-2)

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Влюблённая ведьма

Джейн Анна
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Влюблённая ведьма

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1

Идеальный мир для Лекаря 27

Сапфир Олег
27. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 27

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Ну, здравствуй, перестройка!

Иванов Дмитрий
4. Девяностые
Фантастика:
попаданцы
альтернативная история
6.83
рейтинг книги
Ну, здравствуй, перестройка!

Кротовский, побойтесь бога

Парсиев Дмитрий
6. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, побойтесь бога

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар