Can you point out any official source which states that is the case? My google search "object oriented programming and memory usage" did not surface anything.
No. You probably know better than me. I don't want to "prove" anything, just to help. Maybe "OO overhead" would bring you better results ? (like "Measuring the Perceived Overhead Imposed by Object-Oriented Programming in a Real-time Embedded System")
Did you look at the project of Jimmy ? He defines a class myButtonClass with only one instance and one method check() that give 0-1-2-3 in function of key press, then he uses that in one place (buttons.ino) with a case: iteration.
My gut feeling tells me this is serious OO overkill, and it's repeated logic. Of course, function indirection also brings overhead both in PROGMEM and RAM. You can just test the buttons in loop() to spare even more memory, as most functions appear to be used only once.
Or will the compiler detect that ? Same thing for the "debounce", can the compiler see it's a const or do we need to tell ?
Thinking of it, replacing the functions by macros may give the same win without breaking the files structure. But I'm not sure that's easy to implement.