Please refresh the page if equations are not rendered correctly.
---------------------------------------------------------------
Code with explanation
// Structure and class difference
#include <iostream>
using namespace std;
/* Structure - a data container */
// Small passive objects that carry public data and have no or few basic member functions.
// Data members are typically public (i.e., can be accessed by any function) and
// are accessed using the direct member access operator (.).
struct Person_struct {
string name;
int age;
void print() {
cout << "Name: " << name << ", Age: " << age << endl;
}
};
/* Class - complex data structure */
// Active objects that carry private data, interfaced through public member functions.
// A class is a user-defined data type that we can use in our program, and it works
// as an object constructor, or a "blueprint" for creating objects.
// Data members are typically private (i.e., can be accessed only by member functions)
// and are accessed using the member access operator (->).
// Class data are usually named with a trailing underscore (_).
class Person_class {
string name_;
int age_;
public:
void set_name(string n) { // Mutator/setter function
name_ = n;
}
void set_age(int a) {
age_ = a;
}
void print() {
cout << "Name: " << name_ << ", Age: " << age_ << endl;
}
unsigned age() const { return age_; } // Accessor/getter function
};
int main() {
cout << "Structure and class difference" << endl;
cout << "==============================" << endl;
Person_struct p1;
p1.name = "John";
p1.age = 25;
p1.print();
Person_class p2;
p2.set_name("John Class");
p2.set_age(20);
p2.print();
cout << "p2.age: " << p1.age_ << endl;
return 0;
}
Summary
- Use struct for passive objects with public data, and use class for active objects with private data.
- Use class with mutator and accessor functions to control changes to the data.
- Avoid making mutator and accessor functions if possible.
Comments NOTHING