Section 5 - The Employee Class

6A.5.1  The Program Listing

Here's a program that defines the Employee class, then creates some Employee objects in the main() method.  I have declared and used some int data along the way so you could compare the operation of declaring and using class variables with that of declaring and using  int variables.

#include <iostream>
#include <string>
using namespace std;

// ------- class prototypes -------
class Employee
{
public:
// member data for the class
long socSec;
double wage;
short age;
};

int main()
{
Employee walter, birkoff;
int a, b;

// initialize walter
walter.socSec = 123456789;
walter.wage = 12.95;
walter.age = 61;

// initialize a;
a = 89;

// assign to birkoff
birkoff = walter;

// assign to b
b = a;

// show both a and  b:
cout << "\n\na: " << a << "\nb: " << b << endl;


// show both walter and  birkoff:
cout << "walter: ss#->" << walter.socSec
<< " wage->" << walter.wage
<< " age->" << walter.age << endl;

cout << "birkoff: ss#->" << birkoff.socSec
<< " wage->" << birkoff.wage
<< " age->" << birkoff.age ;

// modify a and walter
a++;
walter.age = (short)(walter.age - 40);
walter.socSec ++ ;
walter.wage += 8.50;
walter.age++;

// show both a and  b after changing a:
cout << "\n\na: " << a << "\nb: " << b << endl;

// show both walter and  birkoff after changing walter:
cout << "walter: ss#->" << walter.socSec
<< " wage->" << walter.wage
<< " age->" << walter.age << endl;
cout << "birkoff: ss#->" << birkoff.socSec
<< " wage->" << birkoff.wage
<< " age->" << birkoff.age << endl;
}

console shot

6B.4.2 The Meaning of the Assignment Operation with Objects

As before with the Pets, we see  that we can set one Employee object equal to another,

birkoff = walter;

This is analogous to assigning one int to another, except that instead of the objects being ints, they are Employees -- our home grown data type. Furthermore, all of the data, both private and public, of the object walter is transferred to the object birkoff as a result of this assignment. 

This is in contrast to languages such as Java or C#, in which the names birkoff and walter are treated as references.  If you come from those languages, understand that things are different in C++.  If you are a beginner to programming, you can ignore this observation.