相关疑难解决方法(0)

私有纯虚函数有什么意义?

我在头文件中遇到了以下代码:

class Engine
{
public:
    void SetState( int var, bool val );
    {   SetStateBool( int var, bool val ); }

    void SetState( int var, int val );
    {   SetStateInt( int var, int val ); }
private:
    virtual void SetStateBool(int var, bool val ) = 0;    
    virtual void SetStateInt(int var, int val ) = 0;    
};
Run Code Online (Sandbox Code Playgroud)

对我来说,这意味着Engine从它派生的类或类必须为那些纯虚函数提供实现.但我不认为派生类可以访问这些私有函数以重新实现它们 - 那么为什么要将它们变为虚拟?

c++ oop inheritance non-virtual-interface

133
推荐指数
3
解决办法
4万
查看次数

C++:重写public\private继承

如果B继承自A使用public,可以B覆盖其中一个函数并强制它为私有?

class A
{
public:
    virtual double my_func1(int i);
    virtual double my_func2(int i);
}

class B : public A // Notice the public inheritance
{
public:
    virtual double my_func1(int i);
private:
    virtual double my_func2(int i);
}
Run Code Online (Sandbox Code Playgroud)

反过来怎么样?如果继承类型是私有的 - 可以B强制特定的函数是公共的吗?

如果A是纯抽象怎么办?这有什么不同吗?

protected做的任意组合有什么区别?

c++ inheritance private public

17
推荐指数
2
解决办法
9868
查看次数

标签 统计

c++ ×2

inheritance ×2

non-virtual-interface ×1

oop ×1

private ×1

public ×1