C++ 当我将父方法作为派生对象调用时出错

C++ Error when I call a parent method as a derived object

本文关键字:对象 派生 调用 出错 方法 C++      更新时间:2023-10-16
#include <iostream>
#include <string>
using namespace std;
class parent
{
    int x=0;
    public:
    int getx()
    {
        return x;
    }
};
class child : public parent
{
    int x=7;
};
int main()
{
  parent cat;
  cout << cat.getx();
  child s;
  cout << s.getx();    //stops working here
  return 0;
}

这是我遇到的问题的一个例子。为什么当我调用 cout <<getx(( 作为派生对象时它不打印 7?

#include <iostream>
#include <string>
class parent
{
protected:
    int m_x;
public:
    parent(int x = 0) : m_x(x) {}
    int getx(){return m_x;}
};
class child : public parent
{
public:
    child():parent(7){}
};
int main()
{
  parent cat;
  std::cout << cat.getx() << std::endl;
  child s;
  std::cout << s.getx() << std::endl;
  return 0;
}

结果

dgs@dhome:~/Develop/Test2$ make getx
g++     getx.cpp   -o getx
dgs@dhome:~/Develop/Test2$ ./getx
0
7