如何避免私有函数使用基类虚函数间接调用。

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 principleL in SOLID

关于c++ - 使用虚拟功能访问私有(private)功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54373684/

10-16 19:07