Я изучаю C ++ и являюсь хорошим новичком в этом.У меня есть небольшие проблемы с пониманием, почему есть логическая ошибка или ошибка во время выполнения.Может кто-нибудь объяснить, что я сделал не так?
Я уже знаю решение, удалив свои функции в классах A и B и просто определив его в конструкторе, но если это правильный путь, почему я не могу инициализировать его вкакая-нибудь другая функция, которую я сделал?
#include <stdlib.h>
#include<iostream>
using namespace std;
class A
{
protected:
int x;
public:
void Init()
{
x = 10;
}
};
class B
{
protected:
int x;
public:
void Init()
{
x = 20;
}
};
class C: public A, public B
{
public:
void Test()
{
cout << "A's x is " << A::x;
cout << "\nB's x is " << B::x;
}
};
int main()
{
C c;
c.Test();
return 0;
}
Я ожидал Нормальный результат, который я обычно получал бы в Java с помощью функции "this".
т.е.
A's x is 10
B's x is 20
Но я получаю
A's x is 8
B's x is 50