如何避免私有函数使用基类虚函数间接调用。
class baseclass{
public:
virtual void printmynumber() = 0;
};
class derivedclass : public baseclass
{
private:
int m_mynumber;
void printmynumber()
{
cout << m_mynumber << endl;
}
public:
derivedclass(int n)
{
m_mynumber = n;
}
};
void main()
{
baseclass *bObj = new derivedclass(10);
bObj->printmynumber();
delete bObj;
}
如何避免调用私有函数?
最佳答案
你不能。void printmynumber()
是baseclass
(因此是derivedclass
)的公共API的一部分。如果您希望derivedclass::printmynumber()
不公开,也许derivedclass
不应从baseclass
继承。
如注释中所建议,这违反了Liskov substitution principle:L in SOLID。
关于c++ - 使用虚拟功能访问私有(private)功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54373684/