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

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

Войти
Регистрация
Восстановить пароль
 
Яна_Max
3 / 3 / 0
Регистрация: 08.11.2011
Сообщений: 137
#1

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

17.03.2012, 22:44. Просмотров 409. Ответов 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;
  }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 22:44     Можно ли складывать поля классов?
Посмотрите здесь:

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

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

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

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

Наследование классов как можно оптимизировать код и условие - C++
Создал два класса родительский монстр и наследный демон. у демона появляется значение разум и условие сила+жизни+разум&lt;=200. Силу и жизнь...

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

Какое консольное mini-приложение можно сделать с использованием классов (для практики)? - C++
Подскажите пожалуйста какое то консольное mini-приложение можно сделать с использованием классов. А то книгу читаю но все бистро забивается...

Как описывать множества, пересекать их, складывать - C++
Расскажите, как описывать множества, пересекать их, складывать и т.д. Искал в гугле, но не нашел ничего путного

С помощью перегрузки операторов складывать, вычитать натуральные дроби - C++
Господа, делали лабу, задачка на дроби. С помощью дружественного класса нужно было складывать, вычитать натуральные дроби. Вроде что-то...

Как складывать числа, если даны только указатели на них? - C++
В общем, стоят задача, в которой требуется передать в функцию указатели на числа типа float и произвести с ними некоторые действия....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
17.03.2012, 22:57     Можно ли складывать поля классов? #2
Можно, только метод должен относиться к классу наследнику.
Konstantin_D
14 / 14 / 2
Регистрация: 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;
Яна_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;
}
Konstantin_D
14 / 14 / 2
Регистрация: 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;
}
Yandex
Объявления
18.03.2012, 02:38     Можно ли складывать поля классов?
Ответ Создать тему
Опции темы

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