【问题标题】:How to access parent class function from derived class object in function over riding feature of C++如何在 C++ 的函数覆盖特性中从派生类对象访问父类函数
【发布时间】:2021-05-06 12:26:29
【问题描述】:
#include<iostream>
using namespace std;

class base
{
public: void getdata()
        {
            cout<<"in base"<<endl;
        }
};

class derived:public base
{
public: void getdata()
        {
            cout<<"in derived"<<endl;
        }
        void base:: getdata()
};

int main()
{
derived d;
d.getdata();
return 0;
}

我收到错误:“无法在 'derived' 中声明成员函数 'base::getdata'”

我想从派生类对象中打印两个函数的内容

【问题讨论】:

  • 仅供参考,使用命名空间 std 是一种不好的做法。
  • 你想在这里做什么:void base:: getdata()?
  • 您可能打算这样做this - 顺便说一句,这里没有任何内容覆盖derived::getdata() 隐藏 base::getdata().
  • void base:: getdata() 在同一个作用域内不能有两个同名的相同函数。但是您可以通过d.getdata();d.base::getdata() 访问它们。

标签: c++ function oop overriding


【解决方案1】:
#include<iostream>
using namespace std;

class base
{
public: 
  base() {

  }
  void getData()
  {
      cout << "in base" << endl;
  }

};

class derived :public base
{
public:

  derived(base b) {

      b.getData();
  }
  void getdata()
  {
      cout << "in derived" << endl;
  }

};

int main()
{
  base b;
  derived d(b);
  d.getdata();


 return 0;
}

试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2018-12-23
    • 2018-03-16
    • 2014-01-15
    相关资源
    最近更新 更多