Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
#1

Можно ли складывать поля классов?

17.03.2012, 22:44. Просмотров 441. Ответов 4
Метки нет (Все метки)

Базовый класс А, поле а.
Производный класс В, поле в.
Можно ли создать метод, складывающий поля а и в?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A {
public:
  int a;
  void a_metod()
  {
      cout << "put a";
      cin >> a;
  }
};
 
class B : public A {
public:
  int b;
  void b_metod()
  {
      cout << "put b";
      cin >> b;
  }
};

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 22:44
Ответы с готовыми решениями:

Создать не менее 2-х базовых классов и класс, наследующий их поля
Используя условия задач из лабораторной работы № 12-13, разработайте алгоритм и...

Нужно сделать композицию классов через объектные поля. (Не наследование!)
Здравствуйте, у вас я тут впервые. Можете помочь с одним школьным заданием для...

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода
Поле шахмотной доски определяеся парой натуральных чисел, каждая из которых не...

Можно ли хранить имена классов в массиве
Можно ли в массиве хранить классы?

указатель на void в иерархии классов. можно ли так делать?
здравствуйте! Такое дело: мне нужно написать иерархию классов для работы с...

4
gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
17.03.2012, 22:57 #2
Можно, только метод должен относиться к классу наследнику.
1
Konstantin_D
14 / 14 / 6
Регистрация: 21.07.2011
Сообщений: 89
17.03.2012, 22:59 #3
У вас поля a и b объявлены как public.
Складывайте их без всяких методов
C++
1
2
3
4
5
6
    A a;
    B b;
    a.a = 3;
    b.a = 4;
    b.b = 5;
    int c = a.a + b.a + b.b;
1
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
18.03.2012, 01:16  [ТС] #4
gore-lykovoe, что-то вроде метода, проверяющего поля всех объектов:если поля в объектов окажутся меньше полей а объектов , необходимо в поля в записать сумму полей а и в.
Но программа не правильно работает. в в не попадает сумма, туда записывается какой-то мусор.
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
class A
{public:
int a;
 void a_metod()
 {
     cout<<"\n input a ";
     cin>>a;
 }
 void bb_metod(){;}
 
};
 
 class B:public A
 {public:
 int b;
 void b_metod()
 {
     cout<<"\n input b ";
     cin>>b;
 }
 int bb_metod()
 {
     A::bb_metod();
     if(b<a)
       b=b+a; 
     cout<<"\n b "<<b;
     return b;
 }
 };
 
 
int _tmain(int argc, _TCHAR* argv[])
{   A s1;
    B s2;
    s1.a_metod();
    s2.b_metod();
    s2.bb_metod();
    cout<<"\n b="<<s2.b;
    getch();
    return 0;
}
0
Konstantin_D
14 / 14 / 6
Регистрация: 21.07.2011
Сообщений: 89
18.03.2012, 02:38 #5
Цитата Сообщение от Яна_Max Посмотреть сообщение
gore-lykovoe, что-то вроде метода, проверяющего поля всех объектов:если поля в объектов окажутся меньше полей а объектов , необходимо в поля в записать сумму полей а и в.
Каких всех объектов? Да и в объекте класса А только одно поле! Что-то с методом вы накрутили.
А сами классы без этого "хитрого" метода могут выглядеть как-то так:
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
#include <iostream>
using namespace std;
 
class A
{
private:
    int a;
public:
    A(int x = 0): a(x) {}
    void set_a(int x) {a = x;}
    int get_a() const {return a;}
};
 
class B: public A
{
protected:
    int b;
public:
    B(int x = 0, int y = 0): A(x), b(y) {}
    void set_b(int x) {b = x;}
    int get_b() const {return b;}
};
 
 
int main()
{
    int tmp;
    A a;
    cout << "Obj a:\nEnter a: ";
    cin >> tmp;
    a.set_a(tmp);
 
    B b;
    cout << "Obj b:\nEnter a: ";
    cin >> tmp;
    b.set_a(tmp);
    cout << "Enter b: ";
    cin >> tmp;
    b.set_b(tmp);
 
    cout << "a: " << a.get_a() << endl;
    cout << "b: " << b.get_a() << ", " << b.get_b() << endl;
 
    return 0;
}
0
18.03.2012, 02:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 02:38

Наследование классов как можно оптимизировать код и условие
Создал два класса родительский монстр и наследный демон. у демона появляется...

Можно ли добавлять статические объекты классов в STL контейнеры?
Или обязательно добавлять ссылки на них в контейнер? Нигде не могу найти ответа.

Можно ли создать в C++ ограниченную переменную (для экономии памяти) без использования классов
Например, переменную, скажем, test, которая принимает значение в диапазоне...


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

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

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