@thecpuwizard said in Inheritance and base functionality: However replacing the "new X(.....)" with "Something::GiveMeAnX(....)" is a minimal (completely valid) DIP Oh, so you like the ServiceLocator pattern. The one thing more toxic and cancerous than languages that start with JAVA. You may think I feel strongly about this. Why shouldn't I? Hidden dependencies are a plague that should be burned out at every opportunity. You cannot write testable software if you use that filth.