继承/多态-我是否被迫使用“受保护的”变量?

我目前正在继承一章中使用Code :: Blocks 17.12使用Big C ++ 2nd Edition

针对需要允许派生类访问该变量的情况,本书介绍了受保护的变量类型。

这本书还警告说,受保护的元素会遭受公共变量的一些陷阱:在最坏的情况下,派生类成员可能会破坏基类数据

该书在专门的部分中演示了时钟程序中受保护成员的用法,并在其中进行了介绍,但最终代码中他们最终将变量设置为private,然后使用一些get_ helper函数来访问此变量。私人数据。这种私有功能和使用辅助功能的组合总是在我的IDE中返回错误,而我无法实现这一目标

以我为P8.1创建的一个简单示例为例,该记录是程序员的员工记录,带有员工基类和程序员派生类。我创建了以下ctor,在基类中将变量名称和sal设置为 protected 状态

Programmer::Programmer(string p_name,double p_sal)
    :Employee(get_name(),get_sal())
{
    name=p_name;
    sal=p_sal;
}

使用此代码,该程序可以完美运行。

根据教科书,如果变量名称和sal在基础中设置为 private 状态,那么只要我使用的是get_ helper函数,我就应该能够执行代码我创建用来访问数据。

任何人都可以解释这里的问题吗?我应该使用protected还是可以的,是否真的有办法让我的所有变量对于类都是私有的?

我也在https://docs.microsoft.com/en-us/cpp/cpp/protected-cpp?view=vs-2019

上找到了它

受保护的成员也可以声明为静态成员,派生类的任何朋友或成员函数都可以访问。未声明为静态的受保护成员只能通过指向,引用或指向派生类的对象的派生类中的朋友和成员函数访问。

到目前为止,我还没有介绍static,所以我最终尝试了使用指针和引用的一堆不同组合,但都不起作用。

我试图理解什么时候使用受保护vs何时使用私有,而这本书还不清楚。有什么想法吗?

ping950726 回答:继承/多态-我是否被迫使用“受保护的”变量?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2754896.html

大家都在问