You can override any base function, but if it's not virtual, then you won't have polymorphism, however you can make a buffer class, for instance:
Code:
#include <iostream>
#include <string>
class base
{
public:
std::string somenonvirtualfunction()
{
return "Base";
}
};
class newbase : public base
{
public:
virtual std::string somenonvirtualfunction()
{
return base::somenonvirtualfunction();
}
};
class derived : public newbase
{
public:
virtual std::string somenonvirtualfunction()
{
return "Derived";
}
};
int main()
{
newbase* a = new newbase;
newbase* b = new derived;
std::cout << a->somenonvirtualfunction() << "\n";
std::cout << b->somenonvirtualfunction() << "\n";
}