summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp')
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp b/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp
new file mode 100644
index 0000000..540f367
--- /dev/null
+++ b/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp
@@ -0,0 +1,88 @@
+// Fig. 7.18: employee2.cpp
+// Member-function definitions for class Employee.
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+#include <new> // C++ standard new operator
+#include <cstring> // strcpy and strlen prototypes
+
+#include "employee2.h" // Employee class definition
+
+// define and initialize static data member
+int Employee::count = 0;
+
+// define static member function that returns number of
+// Employee objects instantiated
+int Employee::getCount()
+{
+ return count;
+
+} // end static function getCount
+
+// constructor dynamically allocates space for
+// first and last name and uses strcpy to copy
+// first and last names into the object
+Employee::Employee( const char *first, const char *last )
+{
+ firstName = new char[ strlen( first ) + 1 ];
+ strcpy( firstName, first );
+
+ lastName = new char[ strlen( last ) + 1 ];
+ strcpy( lastName, last );
+
+ ++count; // increment static count of employees
+
+ cout << "Employee constructor for " << firstName
+ << ' ' << lastName << " called." << endl;
+
+} // end Employee constructor
+
+// destructor deallocates dynamically allocated memory
+Employee::~Employee()
+{
+ cout << "~Employee() called for " << firstName
+ << ' ' << lastName << endl;
+
+ delete [] firstName; // recapture memory
+ delete [] lastName; // recapture memory
+
+ --count; // decrement static count of employees
+
+} // end ~Employee destructor
+
+// return first name of employee
+const char *Employee::getFirstName() const
+{
+ // const before return type prevents client from modifying
+ // private data; client should copy returned string before
+ // destructor deletes storage to prevent undefined pointer
+ return firstName;
+
+} // end function getFirstName
+
+// return last name of employee
+const char *Employee::getLastName() const
+{
+ // const before return type prevents client from modifying
+ // private data; client should copy returned string before
+ // destructor deletes storage to prevent undefined pointer
+ return lastName;
+
+} // end function getLastName
+
+/**************************************************************************
+ * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and Prentice *
+ * Hall. All Rights Reserved. *
+ * *
+ * DISCLAIMER: The authors and publisher of this book have used their *
+ * best efforts in preparing the book. These efforts include the *
+ * development, research, and testing of the theories and programs *
+ * to determine their effectiveness. The authors and publisher make *
+ * no warranty of any kind, expressed or implied, with regard to these *
+ * programs or to the documentation contained in these books. The authors *
+ * and publisher shall not be liable in any event for incidental or *
+ * consequential damages in connection with, or arising out of, the *
+ * furnishing, performance, or use of these programs. *
+ *************************************************************************/