summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/examples/ch07/Fig07_17_19
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
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Prog1/examples/ch07/Fig07_17_19')
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_17_19/Fig07_19.cpp55
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.cpp88
-rw-r--r--Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.h41
3 files changed, 184 insertions, 0 deletions
diff --git a/Bachelor/Prog1/examples/ch07/Fig07_17_19/Fig07_19.cpp b/Bachelor/Prog1/examples/ch07/Fig07_17_19/Fig07_19.cpp
new file mode 100644
index 0000000..27ba9f7
--- /dev/null
+++ b/Bachelor/Prog1/examples/ch07/Fig07_17_19/Fig07_19.cpp
@@ -0,0 +1,55 @@
+// Fig. 7.19: fig07_19.cpp
+// Driver to test class Employee.
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+#include <new> // C++ standard new operator
+
+#include "employee2.h" // Employee class definition
+
+int main()
+{
+ cout << "Number of employees before instantiation is "
+ << Employee::getCount() << endl; // use class name
+
+ Employee *e1Ptr = new Employee( "Susan", "Baker" );
+ Employee *e2Ptr = new Employee( "Robert", "Jones" );
+
+ cout << "Number of employees after instantiation is "
+ << e1Ptr->getCount();
+
+ cout << "\n\nEmployee 1: "
+ << e1Ptr->getFirstName()
+ << " " << e1Ptr->getLastName()
+ << "\nEmployee 2: "
+ << e2Ptr->getFirstName()
+ << " " << e2Ptr->getLastName() << "\n\n";
+
+ delete e1Ptr; // recapture memory
+ e1Ptr = 0; // disconnect pointer from free-store space
+ delete e2Ptr; // recapture memory
+ e2Ptr = 0; // disconnect pointer from free-store space
+
+ cout << "Number of employees after deletion is "
+ << Employee::getCount() << endl;
+
+ return 0;
+
+} // end main
+
+/**************************************************************************
+ * (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. *
+ *************************************************************************/
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. *
+ *************************************************************************/
diff --git a/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.h b/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.h
new file mode 100644
index 0000000..3010210
--- /dev/null
+++ b/Bachelor/Prog1/examples/ch07/Fig07_17_19/employee2.h
@@ -0,0 +1,41 @@
+// Fig. 7.17: employee2.h
+// Employee class definition.
+#ifndef EMPLOYEE2_H
+#define EMPLOYEE2_H
+
+class Employee {
+
+public:
+ Employee( const char *, const char * ); // constructor
+ ~Employee(); // destructor
+ const char *getFirstName() const; // return first name
+ const char *getLastName() const; // return last name
+
+ // static member function
+ static int getCount(); // return # objects instantiated
+
+private:
+ char *firstName;
+ char *lastName;
+
+ // static data member
+ static int count; // number of objects instantiated
+
+}; // end class Employee
+
+#endif
+
+/**************************************************************************
+ * (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. *
+ *************************************************************************/