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

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

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

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

09.09.2013, 23:38. Просмотров 433. Ответов 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&);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 23:38     Прокомментируйте пожалуйста код (класс String)
Посмотрите здесь:

C++ Прокомментируйте пожалуйста код
Прокомментируйте, пожалуйста рекурсию C++
C++ Написал тетрис. Прокомментируйте код пожалуйста )
C++ Прокомментируйте, пожалуйста, код программы.
Прокомментируйте пожалуйста прогу C++
Прокомментируйте пожалуйста C++
Прокомментируйте пожалуйста C++
C++ Уважаемые программисты прокомментируйте программу пожалуйста
Класс Вектор. объясните пожалуйста код! C++
Прокомментируйте, пожалуйста, код. Список - очередь C++
C++ Прокомментируйте код пожалуйста
Прокомментируйте,пожалуйста, участки программы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
180 / 180 / 21
Регистрация: 24.03.2011
Сообщений: 647
Завершенные тесты: 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
180 / 180 / 21
Регистрация: 24.03.2011
Сообщений: 647
Завершенные тесты: 1
10.09.2013, 14:10     Прокомментируйте пожалуйста код (класс String) #4
std::string и String, явно не дублирование... Все тут правильно.
Voivoid
 Аватар для Voivoid
667 / 270 / 12
Регистрация: 31.03.2013
Сообщений: 1,331
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)
Ответ Создать тему
Опции темы

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