Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
1

Реализация класса String

27.07.2015, 21:08. Просмотров 1624. Ответов 4

Доброго времени суток! Пишу свой класс String (учусь). И возник вопрос по реализации.

Имеется определение класса:
C++
1
2
3
4
5
6
7
8
9
class String
{
private:
    char* str;
    int len;
public:
    String(const char* s = "");
    ~String();
};
Конструктор и деструктор соответственно :
C++
1
2
3
4
5
6
7
8
9
10
11
String::String(const char *s)
{
    str = new char[strlen(s)+1];
    strcpy(str, s);
    len = strlen(s);
}
 
String::~String()
{
    delete [] str;
}
Меня смущает такой момент - я хочу, чтобы по умолчанию моя строка была пустая. Так оно и есть. Но в тоже самое время для изменения строки этого обьекта каким-то другим методом мне придётся лишний раз писать delete [] str, чтобы не было утечки.

Это можно решить, делая по умолчанию str = nullptr, но тогда строка не ведёт себя, как пустая.

Вопрос : как мне сделать так, чтобы конструктор по умолчанию использовал nullptr для обнуления char* str и при этом такой обьект вёл себя как пустая строка?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2015, 21:08
Ответы с готовыми решениями:

где РЕАЛИЗАЦИЯ класса string?
объявление нашёл, а реализацию нет..

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора "+=" в...

Реализация класса на базе класса Stack с возможностью !индексирования!
Помогите пожалуйста!!! Нужно реализовать на базе класса stack другой класс с...

Конец строки в .тхт. Реализация в string
Добрый день! столкнулся с проблемой не могу определить конец строки в тхт...

Моя реализация функции перевода STRING в DOUBLE
#include <iostream> #include <string> using namespace std; double...

4
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
27.07.2015, 21:25 2
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
Вопрос : как мне сделать так, чтобы конструктор по умолчанию использовал nullptr для обнуления char* str и при этом такой обьект вёл себя как пустая строка?
Никак. Чтобы строка вела себя как пустая, под '\0' нужно выделить память, значит потом нужно будет её освобождать.
1
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
27.07.2015, 21:31  [ТС] 3
Это да. Я понимаю. Но может какой изящный трюк для таких случаев имеется?
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
27.07.2015, 21:32 4
Лучший ответ Сообщение было отмечено ZaMaZaN4iK как решение

Решение

C++
1
const char*c_str()const{return str?str:"";}
1
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
27.07.2015, 21:46  [ТС] 5
Renji, да. Наверное это именно то, что мне надо. Спасибо!

Добавлено через 8 минут
Может ещё какие способы есть?

Добавлено через 12 секунд
Может ещё какие способы есть?
0
27.07.2015, 21:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2015, 21:46

Моя реализация функции перевода string в int
#include <iostream> #include <string> using namespace std; int...

Одновременная реализация константного и неконстантного оператора [] в классе string
Вобщем, проблема в следующем: нужно реализовать обращение по индексу в классе...

реализация класса
Дано: класс "Фильмы" (название, жанр, главные роли). Вопрос: Возможно ли такой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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