class Temp
{
private:
~Temp() {}
friend class Final;
};
class Final : virtual public Temp
{
public:
void fun()
{
cout<<\"In base\";
Note that non-inheritable classes exist in C++11 using the final
keyword, specified before the : base1, base2, ..., baseN
inheritance list or before the opening {
if the class inherits from nothing:
class Final final { };
class Derived : public Final { }; // ERROR
With a little macro magic and some compiler-detection effort this can be abstracted away to work, or at worst do nothing, on all compilers.