Well my programs are of the order of hundreds of thousands of lines of code now.
Nearly all of that complexity is to do with handling the user interface. Have many controls and ways that the users can interact with the software - and you need a lot of code to handle it - all the things they can do.
It's a mixture of user interface editing in a Graphical user interface builder - and then writing the code to handle all the events.
Then other code is for graphics drawing for the user interface.
I write in low level C, so you should probably divide the number of lines by about 10 to get the equivalent in C++.
Anyway- when you start handling user interface, if the application is complex, not too hard to reach 10 k I'd have thought.
Involves a lot of re-use of the same code - and by reusing it more thoroughly - you can get a smaller easier to read program.
So it's not really a sign of achievement to build a program that has many lines of code particularly. It might just mean you are sloppy in your coding and keep writing the same thing over and over again in different ways instead of writing a neat elegant routine or class that encapsulates the main functionality you want and using that..
As others have said here - if you keep coding for several years on the same project - this is what happens to it. Say you write a hundred lines of code a day - then that means, in three years, you've written a hundred thousand lines of code. For a low level C programmer that's not a lot of code.
If you write ten lines of code a day - then in three years that's ten thousand lines of code.
So if you have a project that takes several years to complete, it's unlikely to go under 10,000 LOC and might well go far over.
If you write at 100 lines of code a day, or about 12 lines of code an hour - then a 10,000 line project would be completed in 100 days.
(Some days of course, I write a negative number of lines of code because I find a better way of doing things, more elegant, or find some work around I did was unnecessary etc)