Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 19:35   #11
R'nhbyV
Пользователь
 
Регистрация: 25.01.2013
Сообщений: 17
По умолчанию

а вот тут revizor оформляет так
Цитата:
String::String
лучше так? да?
и еще вот это:
* чтение символа из заданной позиции;?

Последний раз редактировалось R'nhbyV; 22.05.2013 в 20:39.
R'nhbyV вне форума Ответить с цитированием
Старый 22.05.2013, 23:49   #12
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
а вот тут revizor оформляет так
Цитата:
String::String
лучше так? да?
Не "лучше". Обратите внимание, что у него отдельно объявления методов, потом класс закрывается };, а потом идут определения методов. Разумеется, чтобы компилятор понял, о методе какого класса идёт речь, в этом случае имя класса надо указать; указывается оно вот таким образом.

Цитата:
и еще вот это:
* чтение символа из заданной позиции;?
Сказано же уже:
Цитата:
Видимо, имеется в виду метод, который на вход принимает индекс, на выходе - символ.
Цитата:
Вроде исправил:
Вроде нормально. То есть, по-хорошему здесь виртуальный деструктор не нужен (а перегруженный или запрещённый оператор присваивания - нужен), но так, в принципе, сойдёт.
Ещё из серии "сразу учитесь делать правильно": в конструктор копии обычно передаётся константная ссылка (т.е. конструктор копии гарантирует, что "не испортит образец").
Код:
String (const String& T)
Abstraction вне форума Ответить с цитированием
Старый 23.05.2013, 00:15   #13
R'nhbyV
Пользователь
 
Регистрация: 25.01.2013
Сообщений: 17
По умолчанию

Код:
//чтение символа из заданной позиции
String( int m)
{
n=m;
s[0]=s[n];
}
R'nhbyV вне форума Ответить с цитированием
Старый 23.05.2013, 02:54   #14
taniushska
Новичок
Джуниор
 
Регистрация: 23.05.2013
Сообщений: 5
По умолчанию

Что-то ни то String::String(char)????
taniushska вне форума Ответить с цитированием
Старый 23.05.2013, 08:09   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что-то ни то String::String(char)?
Что именно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2013, 19:14   #16
R'nhbyV
Пользователь
 
Регистрация: 25.01.2013
Сообщений: 17
Вопрос

А как вот это делать?
Производный от СТРОКА класс СТРОКА_ИДЕНТИФИКАТОР
Строки данного класса строятся по правилам записи идентификаторов
в СИ, и могут включать в себя только те символы, которые могут входить
в состав Си-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР.
Обязательные методы:
* конструктор без параметров;
* конструктор, принимающий в качестве параметра Си-строку
(заканчивается нулевым байтом);
* конструктор, принимающий в качестве параметра символ (char).
* конструктор копирования;
* деструктор.
* перевод всех символов строки (кроме цифр) в нижний регистр;
Переопределить следующие операции:
* присваивание (=);
* оператор == - проверка на равенство;
R'nhbyV вне форума Ответить с цитированием
Старый 23.05.2013, 19:45   #17
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
//чтение символа из заданной позиции
Ой. Ой. Ой-ой-ой... нет, чтение не меняет нашего объекта. Мы должны просто вернуть из метода s[m].

Цитата:
А как вот это делать?
1) Вместо private в String указать protected (это нам понадобится для операторов).
2) Создать класс-наследник:
Код:
class IdentifierString : public String {
};
У этого класса сейчас есть "невидимый" член типа String. Как можно видеть, никаких данных-членов сверх этого не надо.
В методах класса IdentifierString можно обращаться как к членам класса String (просто по их названиям, как если бы мы обращались к ним из метода самого String). Также, в списке инициализации можно обращаться к самому этому "невидимому" члену:
Код:
class IdentifierString : public String {
public:
  IdentifierString(const char* str) : String(str) {} //Вызван конструктор String(const char*)
};
Не очень понятно, что имелось в виду под "обязательным деструктором": поскольку у IdentifierString нет "собственных" данных, то и отдельный деструктор ему не нужен. Можно формально написать ~IdentifierString(){}, конечно...
Цитата:
* перевод всех символов строки (кроме цифр) в нижний регистр;
Покажите мне цифру в нижнем регистре. Или точку. Или пробел. Дурацкое какое-то задание. См. функцию tolower().
Цитата:
Переопределить следующие операции:
* присваивание (=);
* оператор == - проверка на равенство;
Дело в том, что когда оператор (помним, что такое оператор языка, да?) пытаются применить к объекту класса, "на самом деле" вызывается функция-оператор:
Код:
MyClass a, b;
a = b;
//a.operator=(b);
if(a==b){/*...*/}
//if( a.operator==(b) ){/*...*/}
Прототипы названных операторов:
Код:
const IdentifierString& operator=(const IdentifierString& other);
bool operator==(const IdentifierString& other);
С оператором проверки на равенство проблем быть не должно, а вот оператор присваивания - те ещё грабли. Так что пока отложите его и сделайте всё остальное.
Abstraction вне форума Ответить с цитированием
Старый 23.05.2013, 20:18   #18
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

а как описать получение длины строки в этой же программе?
kkrah вне форума Ответить с цитированием
Старый 23.05.2013, 20:35   #19
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

и как в производном классе записать метод, который определяет можно ли представить данное число в формате int
kkrah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Создать класс "прямая", поля класса - координаты двух точек (x1,y1) и (x2,y2) // на C# parol Помощь студентам 0 13.12.2011 14:00
Лабораторка C++: Создать класс "угол на полскости" и выполнить проверку работоспособности. Zidane_13 Помощь студентам 0 13.01.2011 22:18
простенький класс "строка" на С++ TopoRRR Помощь студентам 0 14.12.2009 22:31