首页 > 解决方案 > 基类成员没有期望值

问题描述

我正在学习 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”函数获得。

IE

A's x is 10
B's x is 20

但我得到的是

A's x is 8
B's x is 50

标签: c++operatorslogical-operators

解决方案


既没有A::Init()也没有B::Init()被调用。A::x并且B::x初始化


推荐阅读