| Цитата(Ripper @ 8.11.2007, 22:24) | Эээх... 1)Можно без шаблонов? Ну не хочется щас читать ещё одну главу в шилде про шаблоны. наверно можно без них
|
Можно и без шаблонов, тогда длинна числа, которое может хранить класс будет фиксированна (как у тебя и сделано) | Цитата | 2)И что значит прибавить к экземляру класса число? Этот оператор не реализован, а что он в итоге должен делать?
|
Какая-нибудь арифметика для этого класса планируется или нет? Этот класс должен описывать число или просто вводить и выводить hex строку? Если это всеже класс, описывающий число, то и вести он себя должен как число. Т.е. уметь складывать себя с другим экземпляром этого же класса. Так же для класса описан конструктор из int - т.е. он будет автоматически создаваться из int при необходимости. | Код | _hex my_number("1234");
// В конструкторе _hex::_hex код *this += i; // 'i' represents some integer value
// полностью эквивалентен my_number+=i;
// что эквивалентно _hex tmp(i); my_number+=tmp;
// что эквивалентно _hex tmp(i); my_number.operator +=(tmp);
|
| Цитата | 3)Я вообще не понимаю что этот код делает. *this += strtoul(s,0,16); memset(body,0,sizeof(body)); Что это за ф-ии?
|
strtoul(s,0,16) - преобразует строку s (которая в свою очередь состоит из одного символа из входной последовательности) в число по основанию 16 (т.е. односимвольный hex в обычное число) *this += ... прибавляет это число к текущему значению класса. | Цитата | 4)<<= всмысле сдвиг влево и присваивание.. например *this<<=4? "<<" знаю вроде, например 1010 после сдвига 0100 (влево). а какой смысле будет у *this<<=4?
|
Эквивалентно my_number = my_number << 4, не забывай - твой класс это ЧИСЛО, и все арифметические операции с ним выполняются как с обычным ЧИСЛОМ (только очень большим) | Цитата |
| Код | _hex::_hex(char* s) { int k; switch (*s) { case '+': sgn=0; k=1; break; case '-': sgn=1; k=1; break; default: sgn=0; k=0; } for (len=0; len<MAX_SIZE&&s[len];len++) number[len]=s[len+k]; number[len]='\0'; }
|
|
Эта конструкция полностью эквивалентна | Код | _hex::_hex(char* s) { switch (*s) { case '+': sgn=0; ++s; break; case '-': sgn=1; ++s; break; default: sgn=0; } strcpy(number,s); len=strlen(number); }
|
Она просто копирует переданный ей параметр во внутренний буфер. Теперь объясни мне, что ты собираешься с этим буфером дальше делать? Работать с ним как с числом НЕВОЗМОЖНО.
|