0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
1

Написать базовый класс с двумя полями, которые являются указателями на int

05.08.2016, 01:36. Показов 966. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Опишите базовый класс в котором есть хотя бы 1 чисто виртуальный метод. Опишите класс наследник базового класса. Внутри main должно быть возможным создать объект класса наследника. При необходимости должны быть граммотно определены конструкторы, деструкторы, конструкторы копирования и операторы равенства.

Подскажите что делать,чтобы был корректный вывод,никак понять не могу(

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include<iostream>
using namespace std;
class Cel {
public:
    int* a;
    int* b;
 
    Cel() {}
    Cel(int z, int d) {
        a = &z;
        b = &d;
 
    }
    Cel(const Cel& obj) {
        a = obj.a;
        b = obj.b;
        cout << " pizd" << endl;
 
    }
    ~Cel() { cout << "Destr" << endl; }
    Cel& operator=(Cel &obj) {
        if (this == &obj) {
            return *this;
        }
        a = obj.a;
        b = obj.b;
        cout << " mda" << endl;
 
        return *this;
    }
    friend bool operator==(Cel& obj, Cel& obj1) {
        if ((obj.a == obj1.a) && (obj.b == obj1.b)) {
            return true;
        }
        else { return false; }
 
    }
 
    friend Cel operator+(const Cel obj, const Cel obj1) {
 
 
        int po = *obj1.a + *obj.a;
        int ko = *obj1.b + *obj.b;
        Cel kam(po, ko);
 
        return kam;
 
 
    }
    friend ostream   &operator<<(ostream &out, Cel &c)
    {
        out << c.a << " + i " << c.b << "\n";
 
        return out;
    }
};
class Champ :public Cel {
public:
    Champ() :Cel() {}
    Champ(int z, int d) :Cel(z, d) {};
    Champ(const Champ& ob) {
 
        a = ob.a;
        b = ob.b;
 
 
    }
    ~Champ() {}
    friend   Champ& operator+(const Champ& ob, const Champ& ob1) {
 
        int la = *ob.a + *ob1.b;
        int ma = *ob.b + *ob1.a;
        Champ p(la, ma);
 
 
        return p;
 
    }
 
};
int main() {
 
    Cel a(3, 4);
    //cout << a << endl;
    // Champ b(1, 2);
    Cel r(4, 5);
    // Champ t(7, 8);
    // cout<< a == r << endl; 
    cout << a << endl;
    // cout<<b == t<<endl;
    //cout<<b + t<<endl;
 
 
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2016, 01:36
Ответы с готовыми решениями:

Создать базовый класс Тройка_чисел (Triad) и производный класс Time с полями часы, минуты и секунды
Наследование. Виртуальныефункции.Полиморфизм. 1. Цельзадания: 1) Создание консольного приложения,...

Тонкость с указателями - взятие указателя на базовый класс
Как-то возник в голове вопрос: пусть класс D наследует классы A и B. Если у меня есть объект D, я...

Сериализовать класс MainClass с двумя приватными полями, которые являются элементами другого класса ChildClass
Зравствуйте. Цель: Сериализовать класс MainClass с двумя приватными полями, которые являются...

Создать класс с полями разного типа (string, int и тд) в которые будет записываться соответствующая информация
Необходимо создать класс с полями разного типа (string, int и тд) в которые будет записываться...

3
2208 / 1706 / 722
Регистрация: 27.07.2012
Сообщений: 5,091
05.08.2016, 01:59 2
Ну и где в базовом классе "хотя бы 1 чисто виртуальный метод"? Под это дело, кстати, неплохо подходит деструктор, а его реализацию можно перенести в наследник.
0
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
05.08.2016, 02:27  [ТС] 3
Извеняюсь, не то задание написал вот задание к этому коду:
Написать базовый класс с двумя полями, которые являются указателями на int. Описать конструктор, деструктор, конструктор коирования, оператор равенства и оператор сложения для этого класса (самостоятельно решаете как складывать два объекта вашего класса). Описать класс наследник базового класса, у которого будет иначе определён оператор сложения чем в базовом классе (например что-то будет иначе складывать, чем оператор сложения в базовом классе).
0
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
05.08.2016, 02:33  [ТС] 4
Написать базовый класс с двумя полями, которые являются указателями на int. Описать конструктор, деструктор, конструктор коирования, оператор равенства и оператор сложения для этого класса (самостоятельно решаете как складывать два объекта вашего класса). Описать класс наследник базового класса, у которого будет иначе определён оператор сложения чем в базовом классе (например что-то будет иначе складывать, чем оператор сложения в базовом классе).

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include<iostream>
using namespace std;
class Cel {
public:
    int* a;
    int* b;
 
    Cel() {}
    Cel(int z, int d) {
        a = &z;
        b = &d;
 
    }
    Cel(const Cel& obj) {
        a = obj.a;
        b = obj.b;
        
 
    }
    ~Cel() {}
    Cel& operator=(Cel &obj) {
        if (this == &obj) {
            return *this;
        }
        a = obj.a;
        b = obj.b;
        
 
        return *this;
    }
    friend bool operator==(Cel& obj, Cel& obj1) {
        if ((obj.a == obj1.a) && (obj.b == obj1.b)) {
            return true;
        }
        else { return false; }
 
    }
 
    friend Cel operator+(const Cel obj, const Cel obj1) {
 
 
        int po = *obj1.a + *obj.a;
        int ko = *obj1.b + *obj.b;
        Cel kam(po, ko);
 
        return kam;
 
 
    }
    friend ostream   &operator<<(ostream &out, Cel &c)
    {
        out << c.a << " + i " << c.b << "\n";
 
        return out;
    }
};
class Champ :public Cel {
public:
    Champ() :Cel() {}
    Champ(int z, int d) :Cel(z, d) {};
    Champ(const Champ& ob) {
 
        a = ob.a;
        b = ob.b;
 
 
    }
    ~Champ() {}
    friend   Champ& operator+(const Champ& ob, const Champ& ob1) {
 
        int la = *ob.a + *ob1.b;
        int ma = *ob.b + *ob1.a;
        Champ p(la, ma);
 
 
        return p;
 
    }
 
};
int main() {
 
    Cel a(3, 4);
    //cout << a << endl;
    // Champ b(1, 2);
    Cel r(4, 5);
    // Champ t(7, 8);
    // cout<< a == r << endl; 
    cout << a << endl;
    // cout<<b == t<<endl;
    //cout<<b + t<<endl;
 
 
 
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2016, 02:33
Помогаю со студенческими работами здесь

Определите новый класс Student с двумя закрытыми полями полями: name и sumb
Я очередной студент, которые вам, полагаю, очень надоели, но все же я очень надеюсь на вашу помощь....

Определить класс Student с двумя закрытыми полями полями: name и sumb
Всем доброго дня. Помогите пожалуйста довести код до ума. Я что то никак не разберусь. Вот задание:...

Класс с двумя полями
подскажите class classrod { protected: float a; public: ...

Создать класс с двумя полями
Здравствуйте, пишу код, не могу понять почему значение переменных из функции Sum не передаются в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru