The amount of code that goes in varies on the quality of the calculator. If you want to make a calculator that only has infix operators (i.e. no functions like sin), then it can be done without OOP and using only 2 to 4 functions.
But if you want to make a high quality calculator with not only expression evaluation with variables but features like numerical differentiation and integration and compatibility with all types like int, double, bool, std::complex, matrices, vectors, etc, then you'll have to write a lot of code.
I tried to make the good one a few months back. It's complete (except there's no domain checking in functions) and I had to write 74 kb of code.