Abstract functions and variable arguments list

后端 未结 1 1769
情书的邮戳
情书的邮戳 2021-01-18 10:27

I have an abstract class an I like to know if it\'s possible to define an abstract function with variable arguments list?

Give me an example if it\'s possible.

1条回答
  •  孤街浪徒
    2021-01-18 11:18

    Yes, it is possible in principle. An example follows below. You can see the output here.

    Also read about variable arguments list here and here

    #include 
    #include 
    
    using namespace std;
    
    
    class AbstractClass{
    
    public:
    
      virtual double average(int num, ... ) = 0;
    
    
    };
    
    
    class ConcreteClass : public AbstractClass{
    public:
    
       virtual double average(int num, ... ) 
       {
          va_list arguments;                     // A place to store the list of arguments
          double sum = 0;
    
          va_start ( arguments, num );           // Initializing arguments to store all values after num
          for ( int x = 0; x < num; x++ )        // Loop until all numbers are added
            sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
          va_end ( arguments );                  // Cleans up the list
    
          return sum / num;                      // Returns the average
      }
    
    
    
    };
    
    
    
    int main()
    {
        AbstractClass* interface = new ConcreteClass();
        cout << interface->average( 3 , 20 ,30 , 40 );
    
        return 0;
    }
    

    0 讨论(0)
提交回复
热议问题