Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
myjumanji
16 / 16 / 1
Регистрация: 18.05.2012
Сообщений: 39
#1

Прокомментируйте пожалуйста код (класс String) - C++

09.09.2013, 23:38. Просмотров 476. Ответов 5
Метки нет (Все метки)

Добрый день. У меня есть пользовательский класс String. Есть какие-то замечания по оформлению класса? Я стремлюсь к чистому коду.


C++
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
// Дополнить следующую спецификацию к собственному классу строк String,
// обеспечив возможность выполнения смешанных операций
// над собственными строками, С-строками и STL-строками
 
class String
{
private:
size_t _len;
char* _allocator;
 
 
public:
class BadString;
class BadIndex;
String();
explicit String(constchar*);
String(constchar);
explicit String(const string&);
String(const String & s, int multiplayer = 1);
 
~String();
 
String& operator=(const String&);
String& operator=(const string&);
String& operator=(constchar*);
String& operator=(constchar);
 
const string STL_string() const;
const char* c_str() const;
size_t length() const;
bool empty() const;
void clear();
char& operator[](size_t);
const char operator[](size_t) const;
 
bool operator==(const String&) const;
bool operator!=(const String&) const;
bool operator< (const String&) const;
bool operator<=(const String&) const;
bool operator> (const String&) const;
bool operator>=(const String&) const;
 
String operator+(const String&) const;
String& operator=(const String&);
String& operator=(const string&);
String& operator+=(constchar*);
String& operator+=(const String&);
String& operator+=(const string&);
};
 
ostream& operator<<(ostream&, const String&);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 23:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прокомментируйте пожалуйста код (класс String) (C++):

Прокомментируйте пожалуйста код - C++
Объясните пожалуйста как работает данный кусок кода: template &lt;typename T&gt; Deque &lt;T&gt; Deque&lt;T&gt;::operator + (const Deque&lt;T&gt; &amp;L){ ...

Прокомментируйте код пожалуйста - C++
#include&lt;iostream.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;graphics.h&gt; class Point { int X,Y; public: ...

Прокомментируйте, пожалуйста, код программы. - C++
Доброго дня всем! Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел. Если не трудно -...

Написал тетрис. Прокомментируйте код пожалуйста ) - C++
Программа полностью готова. Все как в тетрисе работает. Немного мигает, не знаю как вывод массива сделать по другому. Прокомментируйте код...

Прокомментируйте, пожалуйста, код. Список - очередь - C++
//Список вида &quot;очередь&quot; #include &lt;iostream&gt; using namespace std; //объявляем структуру с данными struct numbers ...

Класс Вектор. объясните пожалуйста код! - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt; using namespace std; class TVector { private: double...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
10.09.2013, 00:05 #2
Используйте форматирование кода)
И вот это лишнее (explicit т.е.), а то как же неявное преобразование типов(char* в String):
C++
1
explicit String(constchar*);
C++
1
explicit String(const string&);
А название _allocator слишком громкое(data лучше бы подошло)) Но это мое субьективное мнение)
1
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
10.09.2013, 13:31 #3
Зачем дублирование в строках? Возможно подразумевалась перегрузка операторов?
строки 44-45
C++
1
2
String& operator=(const String&);
String& operator=(const string&);
строки 47-48
C++
1
2
String& operator+=(const String&);
String& operator+=(const string&);
оператор вывода лучше объявить дружественным внутри класса
C++
1
friend ostream& operator<<(ostream&, const String&);
чтобы у него был доступ к private членам
1
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
10.09.2013, 14:10 #4
std::string и String, явно не дублирование... Все тут правильно.
1
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
10.09.2013, 14:14 #5
private секцию вниз
_allocator; имя сбивает с толку
имена переменных членов не начинать с подчеркивания. заканчивать подчеркиванием можно
class BadString; class BadIndex; должны наследоваться от std::exception; нужно полное определение
explicit в конструкторах убрать
String(constchar) убрать
String(const String & s, int multiplayer = 1) убрать
для перегрузки операторов использовать boost::operators
ostream& operator<<(ostream&, const String&); сделать свободной функцией
сделать класс шаблонным для работы с произвольным типом символов
сделать класс совместимым с STL-контейнерами
1
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
10.09.2013, 14:23 #6
Цитата Сообщение от monolit Посмотреть сообщение
std::string и String, явно не дублирование... Все тут правильно.
да действительно, не увидел разницы в регистрах
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 14:23
Привет! Вот еще темы с ответами:

Прокомментируйте пожалуйста - C++
#include &quot;iostream&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; void Yacoby(int** m, int* s, int it); int...

Прокомментируйте пожалуйста - C++
Не до конца понимаю код программы. Прошу дать комментарии к коду. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;math.h&gt; using...

Прокомментируйте, пожалуйста рекурсию - C++
Нашел в сети код прохождения доски шахм. конем. разобраться не очень получилось, помогите пожалуйста!void chessknight(int k) { c++; ...

Прокомментируйте пожалуйста прогу - C++
#include &quot;iostream&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; float f2(float x){ return x+3; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.09.2013, 14:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru