首页 > 解决方案 > 在派生类中创建构造函数时

问题描述

在派生类中创建构造函数时,使用基类的私有成员变量,是否可以作为派生类构造函数参数的初始值?

class Base{
    private: int m_Par;
    protected: int m_Pro;
    public:int m_Pub;
};
class Derived :public Base{
    public:Derived(int m_Par=1,int m_Pro=2,int m_Pub=3);
           void Func();
};
Derived::Derived(int m_Par,int m_Pro,int m_Pub)
{
    //this->m_Par=m_Par;
    this->m_Pro=m_Pro;
    this->m_Pub=m_Pub;
}

我记得派生类不能访问基类的私有成员变量,但是我想知道为什么将基函数的私有成员变量作为派生类参数的初始值给出时没有错误。

标签: c++

解决方案


你是用注释掉的行编译吗?因为当我使用 g++ 编译时,编译器会抱怨以下错误。

derived.cpp: In constructor ‘Derived::Derived(int, int, int)’:
derived.cpp:12:11: error: ‘int Base::m_Par’ is private within this context
this->m_Par=m_Par;
       ^~~~~
derived.cpp:2:18: note: declared private here
private: int m_Par;

推荐阅读