注册 登录
编程论坛 C++教室

派生类调用基类的获取私有数据成员的成员函数,为何输出错误

令狐少侠56 发布于 2017-03-11 22:18, 1997 次点击
这里B继承A类的getAprivatedData()函数了,调用这个函数的时候无法输出私有数据成员。
是因为基类私有数据成员对派生类对象不可见么?那为什么没有编译错误?
程序代码:

#include <iostream>
#include <stdio.h>

using namespace std;

class A {
public:
    A() = default;
    A(int);

    int getAprivatedData() const;
private:
    int privatedAData;

};

A::A(int a) :
    privatedAData(a) {      }

int A::getAprivatedData() const {//获取该类的公有数据
    return privatedAData;
}

class B : public A {
public:
    B() = default;
    B(int);

private:
    int privatedBData;

};

B::B(int a ) :
    privatedBData(a) {      }

int main()
{
    A a(1);
    B b(4);
    cout << a.getAprivatedData() << endl;
    cout << b.getAprivatedData() << endl;
   
    return 0;
}
3 回复
#2
rjsp2017-03-12 01:53
为何输出错误

什么叫“输出错误”,或者说你认为应该输出什么?
#3
令狐少侠562017-03-12 08:06
回复 2楼 rjsp
原本以为派生类通过调用基类的getAprivatedData()函数能返回基类的私有数据
#4
rjsp2017-03-12 11:59
以下是引用令狐少侠56在2017-3-12 08:06:02的发言:

原本以为派生类通过调用基类的getAprivatedData()函数能返回基类的私有数据

现在不是吗?
1