Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Самоучитель С++ - Шилдт Г.

Шилдт Г. Самоучитель С++ — Спб.: БВХ-Петербург, 2003. — 688 c.
ISBN 5-7791-0086-1
Скачать (прямая ссылка): samouchitelc2003.djvu
Предыдущая << 1 .. 182 183 184 185 186 187 < 188 > 189 190 191 192 193 194 .. 206 >> Следующая

}
return 0;
*
4. Нет. Указатели Bp и Dp указывают на объекты совершенно разных типов,
12.3
1. Новые операторы приведения типов обеспечивают более безопасные и по-нятные способы выполнения операции приведения типов.
2. #include <iostream>
using namespace std;
void f (const double Si)
{
double sv я const__cast<double s> (i) ;
v = 100.0;
}
int main{)
{
double x - 98.6; cout « x c< endl;
f (X) ;
cout « x « endl;
return 0;
3. Поскольку оператор const_cast лишает объекты атрибута const, его использование может привести к неожиданной и нежелательной модификации объектов.
Приложение В. Ответы на вопросы и решения упражнений_____________639
Проверка усвоения материала главы 12
1. Оператор typeid возвращает ссылку на объект класса type_info, содержащего информацию о типе,
2. Для использования оператора typeid в программу необходимо включить заголовок <typeinfo>.
3. Ниже представлены новые операторы приведения типов.
Оператор Назначение
dynamic_cast Выполняет операцию приведения полиморфных типов
reinterpret_cast Преобразует указатель на один тип в указатель на другой тип
static_cast Выполняет операцию "обычного" приведения типов
const^cast Лишает объекты атрибута const
4. ttinclude <iostream>
# include <typeinfо> using namespace std;
class A {
virtual void f{) {}
};
class B: public A {
};
class C: public В {
};
int main ( )
{
A *p, a_ob;
В b_ob;
С c_ob;
int i;
cout << "Введите О для объектов типа А, "; cout << "1 для объектов типа В или";
cout « "2 для объектов типа С,\п";
сіп» і;
if (І==1)p - fib_ob; else if(i=-2) p = &c_ob; else p ~ &a__ob;
640 Самоучитель C++
if(typeid(*p) == typeid(A))
cout << "Объект AM; if (typeid(*p) =- typeid (BJ) cout << "Объект В"; if{typeid(*p) == typeid(C))
cout << "Объект С";
return 0 ;
)
5. Оператор typeid можно заменить оператором dynamic_cast в ситуациях, когда оператор typeid используется для проверки правильности выполнения операции приведения полиморфных типов.
6. Оператор typeid возвращает ссылку на объект типа type_info.
Проверка усвоения материала в целом
1. Здесь представлена версия функции generator(), в которой для контроля за выделением памяти используется механизм обработки исключительных ситуаций.
/* Использование механизма обработки исключительных ситуаций для отслеживания ошибок выделения памяти
V
Shape *geneгаtor()
\
try {
switch(rand() % 4) {
case 0:
return new Line; case 1:
return new Rectangle; case 2:
return new Triangle; case 3:
return new NullShape;
}
j
catch (bad_alloc ba) { return NULL ;
}
return NULL;
}
2. Ниже представлена версия функции generator(), в которой используется оператор new(nothrow).
Приложение В. Ответы на вопросы и решения упражнений_____________________64 т
//Использование оператора new {nothrow)
Shape *generator()
I
Shape *temp; switch(rand() % 4) {
case 0:
return new{nothrow} Line;
case 1:
return new(nothrow) Rectangle;
case 2:
return new(nothrow) Triangle;
case 3:
return new(nothrow) NullShape;
if(temp) return temp; else return NULL;
J
ГЛАВА 13
Повторениепройденного
1. Помимо обычных для языка С операторов приведения типов, в C++ поддерживаются дополнительные операторы, которые перечислены ниже:
Оператор Назначение
dynamic_cast Выполняет операцию приведения полиморфных типов
reinterpret_cast Преобразует указатель на один тип в указатель на другой тип
static_cast Выполняет операцию "обычного" приведения типов
const_cast Лишает объекты атрибута const
2. Класс type_info — это класс, который инкапсулирует информацию о типе данных. Ссылка на объект типа type_info является возвращаемым значением оператора typeid.
3. С помощью оператора typeid.
4. if(typeid(Derived) == typeid(p*))
cout « "Указатель p указывает на объект класса Derived\n";
else
cout « "Указатель p указывает на объект класса Base\n";
642_____________________________________________________________________Самоучитель C++
Предыдущая << 1 .. 182 183 184 185 186 187 < 188 > 189 190 191 192 193 194 .. 206 >> Следующая