C++继承如何令B(int a)继承A(int a,int b)中的a

#include<iostream>
#include<cstring>
using namespace std;
class Base
{
private:
    int n;
public:
    Base(int a)
    {
        n = a;
    }
    void show()
    {
        cout << "n=" << n << endl;
    }

};
class A :public Base
{
private:
    int m;
public:
    A(int a, int b);//请实现该构造函数
    void showa()
    {
        show();
        cout << "m=" << m << endl;

    }

};
int main()
{
    A dobj(10, 20);
    dobj.showa();
    return 0;
}

1、自己在基类实现接口Setn(int a){n=a;},然后通过Base::Setn()访问

A(int a,int b)
{
    Base::Setn(a);
    m = b;
}

2、在Base中将类A声明为有元,

friend class A;

A(int a,int b)
{
    n = a;
    m = b;
}

然后在A中直接访问Base成员变量a。

3、总结:

(1)、不应该直接访问(如果你真需要访问,说明设计不好,设计好得绝对不需要),应该通过基类得公有函数或者protected函数访问

(2)、一种颇有争议的做法,使用friend: