Реализовать класс SmartString с
операциями: получение / изменение элемента по индексу, изменение длины строки, получения длины строки.
конструкторами:
- без параметров (пустая строка)
- преобразования из «сишной» строки
- с указанием длины
и следующей семантикой копирования:
при копировании копия и оригинал разделяют область памяти, выделенную под символы.
При попытке модификации строка, разделяющая с кем-либо область памяти, должна создавать свою копию области памяти.
Пример:
- SmartString s1 = "abc", s2(s1);
- s3 = s2;
- s3.setAt(1, 'B');
Реализация не должна использовать стандартную библиотеку C++ (но может использовать стандартную библиотеку C).
В этом задании и всех последующих реализация подразумевает «качественный код»:
– единообразное именование (CamelCase – типы, camelCase – поля, методы, их параметры)
– использование const, инкапсуляции
– отсутствие copy-paste
– продуманный «дизайн» классов, прототипов методов и т.д.
Работа будет оценена.
Номинации:
- Лучший код (одна!)
- «Принято!»
- Не сдано / сделано плохо
- Плагиат
Срок сдачи 00:00 24 февраля 2011 г.
В примере
s3.at(1) = ‘B’;
заменено на:
s3.setAt(1, ‘B’);
(для того, чтобы отличать случаи «чтения» и «записи» элемента строки)
Спасибо за ценное замечание!