A class in C++ is the basic program construct for implementing an ADT. It allows the programmer to group member variables and methods into one entity. A struct in C++ is practically the same thing as a class. It can have both methods and fields as members, it can have explicit constructors and destructors, and can use inheritance. The main difference is that struct members are public by default, while class members are private by default.
By contrast, a struct in C is more like an array with named elements. There are no methods within the struct itself. For example:
Example: a struct in C
struct Blah{ // no typedef