Освой самостоятельно С++ за 21 день - [273]
#include
#include
#include
class OutOfMemory;
{
public:
OutOfMemory(char *):
char>> GetString() { return itsString; }
private:
char>> itsString;
};
OutOfMemory::OutOfMemory(char * theType)
{
itsString = new char[80];
char warning[] = "Out Of Memory! Can't allocate room for: ";
strncpy(itsString, warning,60);
strncat(itsString,theType,19);
}
int main()
{
try
{
int *myInt = new int;
if (myInt == 0)
throw OutOfMemory("int");
}
catch (OutOfMemory& t:heException)
{
cout << theException.GetString();
}
return 0;
}
3. Унаследуйте новое исключение от исключения, полученного в упражнении 2. Измените блок оператора catch таким образом, чтобы в нем происходила обработка как производного, так и базового исключений.
1: #include
2:
3: // Абстрактный тип исключений
4: class Exception
5: {
6: public:
7: Exception(){}
8: virtual ~Exceptiori(){}
9: virtual void PrintError() = 0;
10: };
11:
12: // Производный класс для обработки проблем памяти
13: // Обратите внимание: в этом классе не производится выделение памяти
14: class OutOfMemory : public Exception
15: {
16: public:
17: OutOfMemory(){}
18: ~OutOfMemory(){}
19: virtual void PrintError();
20: private:
21: };
22:
23: void OutOfMemory::PrintError()
24: {
25: cout << "Нет памяти !!\n";
26: }
27:
28: // Производный класс для обработки ввода неверных чисел
29: class RangeError : public Exception
30: {
31: public:
32: RangeError(unsigned long number){badNumber = number:}
33: ~RangeError(){}
34: virtual void PrintError();
35: virtual unsigned long GetNumber() { return badNumber; }
36: virtual void SetNumber( unsigned long number) {badNumber = number;}
37: private:
38: unsigned long badNumber;
39: };
40:
41: void RangeError::PrintError()
42: {
43: cout << "Number out of range. You used " << GetNumber() << "N\n";
44: }
45:
46: void MyFunction(); // прототип функции
47:
48: int main()
49: {
50: try
51: {
52: MyFunction();
53: }
54: // Чтобы использовать только один оператор catch,
55: // примените для этого виртуальные функции
56: catch (Exceptions theException)
57: {
58: theException.PrintError();
59: }
60: return 0;
61: }
62:
63: void MyFunction()
64: {
65: unsigned int *myInt = new unsigned int;
66: long testNumber;
67: if (myInt == 0)
68: throw 0ut0fMemory();
69: cout << "Enter an int: ";
70: cin >> testNumber;
71: // эту проверку лучше заменить серией
72: // проверок, чтобы выявить неверные данные, введенные пользователем
73: if (testNumber > 3768 || testNumber < 0)
74: throw RangeError(testNumber);
75:
76: *mylnt = testNumber;
77: cout << "Ok. myInt: " << *myInt;
78: delete myInt;
79: }
4. Измените код из упражнения 3, чтобы получить трехуровневый вызов функции.
1: #include
2:
3: // Абстрактный тип исключений
4: class Exception
5: {
6: public:;
7: Exception(){ }
8: virtual ~Exception(){}
9: virtual void PrintError() = 0;
10: };
11:
12: // Производный класс для обработки проблем памяти
13: // Обратите внимание: в этом классе не производится выделение памяти!
14: class OutOfMemory : public Exception
15: {
16: public:
17: OutOfMemory(){}
18: ~OutOfMemory(){}
19: virtual void PrintError();
20: private:
21: };
22:
23: void OutOfMemory::PrintError()
24: {
25: cout << "Нет памяти!!\n";
26: }
27:
28: // Производный класс для обработки ввода неверных чисел
29: class RangeError : public Exception
30: {
31: public:
32: RangeError(unsigned long number){badNumber = number;}
33: ~RangeError(){ }
34: virtual void PrintError();
35: virtual unsigned long GetNumber() { return badNumber; }
36: virtual void SetNumber(unsigned long number) {badNumber = number;}
37: private:
38: unsigned long badNumber;
39: };
40:
41: void RangeError::PrintError()
42: {
43: cout << " Number out of range. You used " << GetNumber() << "!!\n";
44: }
45:
46: // прототипы функций
47: void MyFunction();
46: unsigned int * FunctionTwo();
49: void FunctionThree(unsigned int *);
50:
51: int main()
52: {
53: try
54: {
55: MyFunction();
56: }
57: // Чтобы использовать только один оператор catch,
58: // примените для этого виртуальные функции.
59: catch (Exception& theException)
60: {
61: theException.PrintError();
62: }
63: return 0;
64: }
65:
66: unsigned int >> FunctionTwo()
67: {
68: unsigned int < 69: if (myInt == 0) 70: throw OutOfMemory(); 71: return myInt; 72: } 73: 74: void MyFunction() 75: { 76: unsigned int *myInt = FunctionTwo{ }; 77: 78: FunctionThree(myInt); 79: cout << "0k. myInt: " << *myInt; 80: delete myInt; 81: } 82: 83: void FunctionThree(unsigned int *ptr) 84: { 85: long testNumber; 86: cout << "Enter an int: "; 87: cin >> testNumber; 88: // эту проверку лучше заменить серией 89: // проверок, чтобы выявить неверные данные, введенные пользователем 90: if (testNumber > 3768 || testNumber < 0) 91: throw RangeError(testNumber);
В пособии обсуждаются вопросы, связанные с историей массовой литературы, этапами ее изучения в России и на Западе, выявляются дифференциальные признаки массовой литературы, устанавливается ее место в литературном процессе и культуре, степень влияния на читательскую аудиторию, характеризуется язык текстов массовой литературы в проекции на языковую ситуацию рубежа XX–XXI веков. Особый раздел пособия посвящен филологическому анализу детектива, романа-боевика, фантастического романа, дамского романа, историко-авантюрного романа, популярной песни и некоторых других актуальных жанров массовой литературы.
Предлагаемое пособие включает развернутую программу учебной дисциплины «Актуальные проблемы современной лингвистики», хрестоматию и систему заданий творческого и проблемного характера. Издание призвано обеспечить изучение цикла общелингвистических дисциплин: «Теория языка», «Общее языкознание», «Актуальные проблемы современной лингвистики», включенных в блок специальных дисциплин государственного образовательного стандарта по направлению «Филология», а также в образовательный стандарт подготовки магистров по направлениям «Филология» и «Языковое образование».Для студентов, магистрантов, аспирантов, преподавателей-филологов.6-е издание.
В предлагаемом учебном пособии в сжатой концентрированной форме изложен полный курс предмета «Общая психология». В книге рассматриваются базовые термины и понятия науки, основные подходы и методы исследования. Подробно описаны основные исторические этапы развития психологии, дана характеристика психологических школ и теорий.Компактная подача и доступное изложение материала, наглядный иллюстративный материал делают эту книгу незаменимой для студентов вузов, позволяют им сэкономить время и максимально быстро и качественно подготовиться к семинарам, зачетам и экзаменам по данному курсу.Для студентов и преподавателей высших учебных заведений, а также для всех, кто интересуется вопросами психологии.
Книга посвящена правовым, психологическим и криминалистическим основам следственных действий как процессуальных способов доказывания по уголовным делам. Рассмотрены общая характеристика следственного действия, психологические условия и приёмы повышения их эффективности, даны рекомендации по подготовке и проведению отдельных видов основных следственных действий, регламентируемых ныне действующим УПК РФ.Для работников правоохранительных органов, студентов, аспирантов, докторантов, профессорско-преподавательского состава юридических учебных заведений.
В учебном пособии освещаются основные положения программы курса «Введение в славянскую филологию». Славянская филология — наука о культуре славянских народов в ее словесно-текстовом выражении. В пособии рассматриваются культурная история славянских народов, мифология древних славян, их бытовое устройство, старинная обрядность, особенности письменности, факты славянских языков во взаимосравнении, основные особенности славянских литератур (в частности, стихосложения) и т. п., а также деятельность крупнейших филологов-славистов.Для студентов, аспирантов и преподавателей филологических факультетов вузов.
Данное пособие посвящено важнейшему разделу курса «Основы творческой деятельности журналиста» и в отечественной литературе аналогов не имеет. Книга задумана как практическое руководство для будущих журналистов. При этом автор учитывает опыт практикующих журналистов, а также российских и зарубежных коллег.Книга предназначена для преподавателей, аспирантов и студентов университетов и других учебных заведений, готовящих журналистов.