What exactly is the difference between a struct and a class? What are the advantages/disadvantages of one over the other?