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

Класс Int имитирующий встроенный тип int - C++

Восстановить пароль Регистрация
 
Later28
0 / 0 / 0
Регистрация: 12.01.2013
Сообщений: 12
12.01.2013, 19:24     Класс Int имитирующий встроенный тип int #1
Создать класс Int (с заглавной буквы) имитирующий встроенный тип int и позволяющий следующие конструкции:
Int i = 0;
i = i+1;
i++;
i=i+i;
i.vivod();//Вывод значения на консоль
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
12.01.2013, 19:37     Класс Int имитирующий встроенный тип int #2
взгляни сюда
Реализация расширенного класса Integer
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 19:47     Класс Int имитирующий встроенный тип int #3
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
#include <iostream>
using namespace std;
 
class Int
{
private:
    int m_value;
public:
    Int(const int &_value) : m_value(_value){};
    Int& operator= (const int &_rvalue) { m_value = _rvalue; return *this; };
    Int& operator= (const Int &_rvalue) { m_value = _rvalue.m_value; return *this; };
    Int& operator+ (const int &_rvalue) { m_value += _rvalue; return *this; };
    Int& operator+ (const Int &_rvalue) { m_value += _rvalue.m_value; return *this; };
    Int& operator++ () { m_value++; return *this; };
    void vivod(void) {std::cout<<m_value;};
};
 
int main()
{
    Int i = 0;
    i = i+1;
    i++;
    i=i+i;
    i.vivod();
    system("pause");
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
12.01.2013, 19:47     Класс Int имитирующий встроенный тип int #4
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
#include <iostream>
class Int
{
        int i;
public:
        Int(int);
        Int operator +(Int);
        Int operator ++(int);
        void output();
};
Int::Int(int j)
{
      this->i = j;
}
Int Int::operator +(Int j)
{
       return Int(this->i+j.i);
}
Int Int::operator ++(int)
{
       return this->i++;
}
void Int::output()
{
       std::cout<<this->i<<std::endl;
}
int main()
{
     Int i = 0;
     i=i+1;
     i++;
     i = i+i;
     i.output();
     return 0;
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
12.01.2013, 19:49     Класс Int имитирующий встроенный тип int #5
Как то так:
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
52
53
54
#include <iostream>
 
 
struct Int {
   
   Int(int const value = int()) : value(value) {}
      
   operator int() const {
      return value;
   }
   
   Int & operator ++() {
      ++value;
      return *this;
   }
   
   Int operator ++(int) {
      Int copy(*this);
      ++(*this);
      return copy;
   }
      
   Int & operator +=(Int const rhs) {
      value += rhs.value;
      return *this;
   }
   
   
private:
   int value;
};
 
Int operator +(Int lhs, Int const rhs) {
   lhs += rhs;
   return lhs;
}
 
Int operator +(Int const lhs, int const rhs) {
   return (lhs + Int(rhs));
}
 
Int operator +(int const lhs, Int const rhs) {
   return (Int(lhs) + rhs);
}
 
 
int main() {   
   Int i = 0;
   i = i+1;
   i++;
   i=i+i;
   // i.vivod();//Вывод значения на консоль 
   std::cout << i << std::endl;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.01.2013, 22:10     Класс Int имитирующий встроенный тип int #6
Я бы по другому сделал. В задании сказано
Цитата Сообщение от Later28 Посмотреть сообщение
имитирующий встроенный тип int
поэтому вместо приватного члена int я бы сделал массив байт (char) из sizeof(int) элементов. Соответсвенно все операторы преобрели бы более сложную реализацию, да и тело конструктора тоже, т.к. еще нужно учитывать порядок байтов little-endian/big-endian.
Думаю это было бы ближе к заданию.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
13.01.2013, 13:12     Класс Int имитирующий встроенный тип int #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Думаю это было бы ближе к заданию
Навряд ли. Задача - обычного начального уровня для тех, кто изучает Си++. Твоя интерпретация задачи выходит далеко за эти рамки. Ну и, к слову, если такой тип иммитируется массивом char'ов, то от endian'а такая конструкция не зависит, потому как нулевой элемент массива будет всегда определять младший байт (или всегда старший, в зависимости от желания автора)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.01.2013, 13:18     Класс Int имитирующий встроенный тип int #8
Цитата Сообщение от Evg Посмотреть сообщение
Твоя интерпретация задачи выходит далеко за эти рамки.
Я имел ввиду, что если бы мне в универе дали такую задачу, то я сделал бы ее так.

Цитата Сообщение от Evg Посмотреть сообщение
то от endian'а такая конструкция не зависит ... в зависимости от желания автора
Ну можно было бы сделать так
C++
1
2
3
enum endian{LittleEndian, BigEndian}
...
Int(endian end = LittleEndian) {}// конструктор
Так было бы гораздо интересней
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
13.01.2013, 14:05     Класс Int имитирующий встроенный тип int #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так было бы гораздо интересней
Это был бы геморрой ради геморроя, который ничем не оправдан (т.е. усложнение реализации не даёт никаких преимуществ)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.01.2013, 14:29     Класс Int имитирующий встроенный тип int #10
Цитата Сообщение от Evg Посмотреть сообщение
Это был бы геморрой ради геморроя, который ничем не оправдан (т.е. усложнение реализации не даёт никаких преимуществ)
Ну почему, если рассматривать задачу в рамках контрольной работы для ВУЗа, то это была бы демонстрация знаний. А если говорить о ней, как о реальной задаче, то врядли такое вообще может понадобиться, ну если понадобится, то конечно такое усложнение совершено лишнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 14:31     Класс Int имитирующий встроенный тип int
Еще ссылки по теме:

Как понять int a(int x,int y, int z)? C++
C++ Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int
C++ Void send(int* to, int* from, int count)

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
13.01.2013, 14:31     Класс Int имитирующий встроенный тип int #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
то это была бы демонстрация знаний
В реальности 99.9% что такое решение ты бы не сдал. Как минимум потому, что препод, придумавший такое задание, вряд ли бы осилил твою реализацию (если вообще знает, что такое endian)
Yandex
Объявления
13.01.2013, 14:31     Класс Int имитирующий встроенный тип int
Ответ Создать тему
Опции темы

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