Given that you probably are using pointers, and occasionally you are allocating memory, smart pointers handle deallocation for you. And yes, you can do it yourself but it is prone to errors and maybe sometimes you forget a case and memory doesn’t get deallocated and suddenly there is a leak in the program.
When you’re there, shared_ptr is used when you want to store the pointer in multiple locations, unique_ptr when you only want to have one instance of the pointer (you can move it around though).
Smart pointers are really really nice, I do recommend getting used to them (and all other features from c++11 forward).
I wanted to see for myself and it looks like the spectra of the sun and moon are fairly similar:
Moon: https://olino.org/blog/us/articles/2015/10/05/spectrum-of-moon-light/comment-page-1/
Sun: https://seos-project.eu/earthspectra/images/Solar-spectrum_th.png
Looks pretty similar I gotta say
That being said, the intensity is of course much lower of the light reflected from the moon.