Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Реализация безопасного String.

Posted on 23 сентября, 201325 сентября, 2013 by admin

Реализуйте String из параграфа 11.12 так, чтобы он стал столь же безопасным, как стандартный контейнер.

Не хочу я его реализовывать потому что он очень громадный класс, ну там только нужно добавить try блок в конструктор копирования или в какие нить функции которые выделяют память что бы перехватывать исключения. Мне не охота с ним парится поэтому мы просто щас создадим простую версию класса String и попытаемся ее как небудь обезопасить.

От что то вроде этого должно быть:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
using std::cout;
using std::endl;
#include <cstring>
using std::strlen;
using std::strcpy;
 
class ex{};
 
class String
{
char* str;
int size_t;
public:
String():str(0),size_t(0){}
String(char* s)
{
try
{
size_t=strlen(s);
str=new char[size_t+1];
strcpy(str,s);
}
catch(ex&)
{
delete str;
}
}
String(const String& s)
{
try
{
str=new char[s.size_t+1];
throw ex();
strcpy(str,s.str);
}
catch(...)
{
delete str;
cout <<"endl"<<endl;
throw ex();
}
}
~String(){cout <<"destr"<<endl;delete str;}
 
int size(){return size_t;}
void print(){cout <<str<<endl;}
};
 
int main()
{
try
{
String s("hellow world");
cout <<"s.size()= "<<s.size()<<endl;
s.print();
String s2(s);
}
catch(ex&)
{
cout <<"ex except"<<endl;
}
 
return 0;
}

[youtube]https://www.youtube.com/watch?v=UGMwo7VVrnw[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
  • Татьяна к записи Как удалить изображение из google
©2021 Kselax.ru Theme by ThemeGiant