Can a destructor be declared pure virtual in C++?

Question | Aug 8, 2019 | nwheeler 

A class that has a pure virtual function is abstract and cannot be instantiated. When a virtual function is declared pure in a base class, it shows the intent that any derived class that can be instantiated must define this function.

Sometimes, there is no virtual or non-virtual function that can be marked pure virtual but we still want to make sure that the base class is abstract and cannot be instantiated. In that case, we can mark the destructor as pure virtual. However, that comes with a little bit of extra effort. Let's take an example:

class Sauce {
 public:
  virtual ~Sauce() = 0; 
};  

class AppleSauce : public Sauce {
 public:
  ~AppleSauce() { }
};

Instantiate AppleSauce somewhere:

AppleSauce appleSauce; 

The above code compiles successfully but fails to build or link. Select the solution from given choices below that will fix the code (check Explanations for details):