你能让一个类的方法不可继承吗?

use*_*993 5 c++ inheritance

我有一个几何对象的基类,我自己使用但我也希望将该类继承到另一个类,它是对象的高级版本,因为它们共享很多逻辑.基础对象有几个静态创建方法(由于参数冲突不能使用new),我不想继承那些.我能否以某种方式指定那些不被继承的东西?

编辑:包括一个例子

struct Banana {
    float length;

    Banana() {}

    Banana(float length) {
        this->length = length;
    }

    static Banana CreateByHalfLength(float halfLength) {
        return Banana(halfLength * 2);
    }
};

struct AdvancedBanana : Banana {
    float bendAmt;

    AdvancedBanana(float length, float bendAmt) {
        this->length = length; this->bendAmt = bendAmt;
    }
};
Run Code Online (Sandbox Code Playgroud)

我不希望AdvancedBanana :: CreateByHalfLength存在,而我希望Banana :: CreateByHalfLength存在并且可以从类外部访问.

Mid*_*ido 3

尝试将此函数红色声明为子函数中的私有函数:

 #include <iostream>
    class Banana {
    public:
        float length;
        float getLenght(){
            return length;
        }
        void setLenght(float value){
             length = value;
        }
        Banana() {}

        Banana(float length) {
            this->length = length;
        }

        static Banana CreateByHalfLength(float halfLength) {
            return Banana(halfLength * 2);
        }
    };

    class AdvancedBanana : public Banana {
    public:
        float bendAmt;

        AdvancedBanana(float length, float bendAmt) {
            this->length = length; this->bendAmt = bendAmt;
        }
    private:
        static AdvancedBanana CreateByHalfLength(float halfLength);

    };
    int main()
    {
    // work
        Banana a(1);
        a.CreateByHalfLength(1);

    AdvancedBanana b(0,1);
    //will fail
    //  b.CreateByHalfLength(1);

    };
Run Code Online (Sandbox Code Playgroud)