c++ - 在派生类中创建构造函数时
问题描述
在派生类中创建构造函数时,使用基类的私有成员变量,是否可以作为派生类构造函数参数的初始值?
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;
}
我记得派生类不能访问基类的私有成员变量,但是我想知道为什么将基函数的私有成员变量作为派生类参数的初始值给出时没有错误。
解决方案
你是用注释掉的行编译吗?因为当我使用 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;
推荐阅读
- karma-runner - 在 Angular 和 HttpIntercepter 中约定消费者测试
- c# - EF Core 实体类型
- c# - 如何从 .net windows 窗体应用程序中的本地文件夹下载 csv 文件?
- javascript - 如何在数组中获取数组的值?
- c# - 文本文件到 Excel
- json - 收集Json中DataFrame列的数据
- javascript - 在函数中使用“this”
- java - 在 Java 中以 JSON 格式下载消息后从 Facebook 数据转换时间戳
- javascript - D3.js 散点图中重叠标签的智能定位
- dependency-injection - Unity DI Container RegisterType 方法中断从 v5.8.x 到 v5.9.x 的更改