Can someone explain the benefits of polymorphism?

前端 未结 10 453
难免孤独
难免孤独 2021-02-01 10:41

So I understand pretty much how it works, but I just can\'t grasp what makes it useful. You still have to define all the separate functions, you still have to create an instanc

10条回答
  •  孤城傲影
    2021-02-01 11:34

    The poly in polymorphic means more than one. In other words, polymorphism is not relevant unless there is more than one derived function.

    In this example, I have two derived functions. One of them is selected based on the mode variable. Notice that the agnostic_function() doesn't know which one was selected. Nevertheless, it calls the correct version of function().

    So the point of polymorphism is that most of your code doesn't need to know which derived class is being used. The specific selection of which class to instantiate can be localized to a single point in the code. This makes the code much cleaner and easier to develop and maintain.

    #include 
    using namespace std;
    
    class Parent
    {
    public:
        virtual void function() const {};
    };
    
    class Derived1 : public Parent
    {
        void function() const { cout << "derived1"; }
    };
    
    class Derived2 : public Parent
    {
        void function() const { cout << "derived2"; }
    };
    
    void agnostic_function( Parent const & bar )
    {
       bar.function();
    }
    
    int main()
    {
       int mode = 1;
       agnostic_function
       (
          (mode==1)
          ? static_cast(Derived1())
          : static_cast(Derived2())
       );
    }
    

提交回复
热议问题