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

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

Восстановить пароль Регистрация
 
myjumanji
 Аватар для myjumanji
16 / 16 / 1
Регистрация: 18.05.2012
Сообщений: 39
09.09.2013, 23:38     Прокомментируйте пожалуйста код (класс String) #1
Добрый день. У меня есть пользовательский класс 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&);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
10.09.2013, 00:05     Прокомментируйте пожалуйста код (класс String) #2
Используйте форматирование кода)
И вот это лишнее (explicit т.е.), а то как же неявное преобразование типов(char* в String):
C++
1
explicit String(constchar*);
C++
1
explicit String(const string&);
А название _allocator слишком громкое(data лучше бы подошло)) Но это мое субьективное мнение)
Cynacyn
 Аватар для Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
10.09.2013, 13:31     Прокомментируйте пожалуйста код (класс String) #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 членам
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
10.09.2013, 14:10     Прокомментируйте пожалуйста код (класс String) #4
std::string и String, явно не дублирование... Все тут правильно.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
10.09.2013, 14:14     Прокомментируйте пожалуйста код (класс String) #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-контейнерами
Cynacyn
 Аватар для Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
10.09.2013, 14:23     Прокомментируйте пожалуйста код (класс String) #6
Цитата Сообщение от monolit Посмотреть сообщение
std::string и String, явно не дублирование... Все тут правильно.
да действительно, не увидел разницы в регистрах
Yandex
Объявления
10.09.2013, 14:23     Прокомментируйте пожалуйста код (класс String)
Ответ Создать тему
Опции темы

Текущее время: 17:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru