Как изменить родительскую переменную-член publi c из дочерней функции-члена? - PullRequest
1 голос
/ 20 февраля 2020

начинающий программирование здесь. Я пытался выяснить это сам некоторое время, Может кто-нибудь сказать мне, почему это печатает 5, а не 8? Насколько я знаю, это должно сработать, я пытался пройти по ссылке и использовать указатели, но, поскольку я все еще немного новичок, возможно, я еще не совсем понял, так что если кто-то мог бы помочь мне и указать мне в правильное направление, я ценю это. Ура.

#include <iostream>
using namespace std;


class classA {
  public:
    int a = 5;

    void print(){
      cout << a << endl;
    }
};

 class classB : public classA {
   public:
     int one;
     void modify (){
       cin >> one;
       if (one == 1){
         a =+ 3;
       }
     }
 };

int main()
{

    cout << "Hi, push '1'" << endl;
    classA printobj;
    classB modifyobj;
    modifyobj.modify();
    printobj.print();

    return 0;
}

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

Вы изменяете modifyobj, но затем печатаете printobj. Два объекта не имеют никакого отношения друг к другу, поэтому изменение одного не повлияет на другое.

2 голосов
/ 20 февраля 2020

printobj и modifyobj - два совершенно не связанных между собой объекта, каждый из которых имеет уникальную и не связанную и различную переменную-член a.

Чтобы ваш пример работал, вам нужно один объект типа classB:

classB obj;
obj.print();
obj.modify();
obj.print();
0 голосов
/ 20 февраля 2020

Спасибо всем, я знал, что это будет что-то простое, мне нужно многому научиться, ха-ха!

...