In C++ the struct keyword is just another way to declare a class. If you want, you can make all your classes just a collection of stuff (no methods), but then you'll end up writing things like this:
Code:
Person p = make_person("SomeFirst", "SomeSurname");
cout << "Person 1: ";
print(p);
cout << "\n";
Person q;
copy_person(p, q); // Copy Person p to Person q.
cout << "Person 2: ";
print(q);
cout << "\n";
cleanup(p);
cleanup(q);
If you make Person a class with member functions, then its use becomes part of a common interface (i.e. you use it just like everything else):
Code:
Person p("SomeFirst", "SomeSurname"); // Use constructor.
Person q = p; // Use copy constructor.
cout << "Person 1: "<<p<<"\nPerson 2: "<<q<<"\n"; // Use operator<<.
// Use destructor for automatic cleanup.
Personally I think the second version is better than the first.