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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Later28
0 / 0 / 0
Регистрация: 12.01.2013
Сообщений: 12
#1

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

12.01.2013, 19:24. Просмотров 590. Ответов 10
Метки нет (Все метки)

Создать класс Int (с заглавной буквы) имитирующий встроенный тип int и позволяющий следующие конструкции:
Int i = 0;
i = i+1;
i++;
i=i+i;
i.vivod();//Вывод значения на консоль
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 19:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс Int имитирующий встроенный тип int (C++):

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int - C++
// Оператор преобразования #include &lt;iostream&gt; using namespace std; class Counter { public: Counter(): itsVal(0) {} ...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include &quot;stdafx.h&quot; int...

[Linker error] undefined reference to `sterling(int, int, int)' - C++
#include &lt;iostream&gt; using namespace std; int sterling(int,int,int); int sterling(int,int); int sterling(int); int main() { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
12.01.2013, 19:37 #2
взгляни сюда
Реализация расширенного класса Integer
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 19:47 #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
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
12.01.2013, 19:47 #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!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
12.01.2013, 19:49 #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
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
12.01.2013, 22:10 #6
Я бы по другому сделал. В задании сказано
Цитата Сообщение от Later28 Посмотреть сообщение
имитирующий встроенный тип int
поэтому вместо приватного члена int я бы сделал массив байт (char) из sizeof(int) элементов. Соответсвенно все операторы преобрели бы более сложную реализацию, да и тело конструктора тоже, т.к. еще нужно учитывать порядок байтов little-endian/big-endian.
Думаю это было бы ближе к заданию.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,154
Записей в блоге: 26
13.01.2013, 13:12 #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Думаю это было бы ближе к заданию
Навряд ли. Задача - обычного начального уровня для тех, кто изучает Си++. Твоя интерпретация задачи выходит далеко за эти рамки. Ну и, к слову, если такой тип иммитируется массивом char'ов, то от endian'а такая конструкция не зависит, потому как нулевой элемент массива будет всегда определять младший байт (или всегда старший, в зависимости от желания автора)
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
13.01.2013, 13:18 #8
Цитата Сообщение от Evg Посмотреть сообщение
Твоя интерпретация задачи выходит далеко за эти рамки.
Я имел ввиду, что если бы мне в универе дали такую задачу, то я сделал бы ее так.

Цитата Сообщение от Evg Посмотреть сообщение
то от endian'а такая конструкция не зависит ... в зависимости от желания автора
Ну можно было бы сделать так
C++
1
2
3
enum endian{LittleEndian, BigEndian}
...
Int(endian end = LittleEndian) {}// конструктор
Так было бы гораздо интересней
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,154
Записей в блоге: 26
13.01.2013, 14:05 #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так было бы гораздо интересней
Это был бы геморрой ради геморроя, который ничем не оправдан (т.е. усложнение реализации не даёт никаких преимуществ)
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
13.01.2013, 14:29 #10
Цитата Сообщение от Evg Посмотреть сообщение
Это был бы геморрой ради геморроя, который ничем не оправдан (т.е. усложнение реализации не даёт никаких преимуществ)
Ну почему, если рассматривать задачу в рамках контрольной работы для ВУЗа, то это была бы демонстрация знаний. А если говорить о ней, как о реальной задаче, то врядли такое вообще может понадобиться, ну если понадобится, то конечно такое усложнение совершено лишнее.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,154
Записей в блоге: 26
13.01.2013, 14:31 #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
то это была бы демонстрация знаний
В реальности 99.9% что такое решение ты бы не сдал. Как минимум потому, что препод, придумавший такое задание, вряд ли бы осилил твою реализацию (если вообще знает, что такое endian)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 14:31
Привет! Вот еще темы с ответами:

[Linker Error] Unresolved external 'Sort(int near*near ,int, int) - C++
не могу понять в чем ошибка при компиляции ошибок не выдает при запуске программы - выдает эту ошибку Unresolved external 'Sort(int...

Функции float average(int arrray[],int from,int to) - C++
Напишите код функции float average(int arrray,int from,int to). Возвращаемым значением функции должно быть среднее значение элементов...

Написать функцию типа Beaty(int iA, int iB, int *pc) - C++
Задание: Написать функцию типа Beaty(int iA, int iB, int *pc); для выражения (iA+iB)/(iA*iB). Помогите решить!

Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N - C++
Напишите функцию f(int&amp; m1, int&amp; m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N. Решение. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2013, 14:31
Ответ Создать тему
Опции темы

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