In this lab you will write a program that uses virtual functions. It will use the account and joint_account classes written previously. Write a class that keeps track of a list of accounts. The class should have an array of 10 pointers to the class account (the base class). It should also be able to keep track of the number of the accounts that are actually being used thus far. In other words, you are allowed to have up to 10 accounts, but initially the number of accounts being used is 0. As the user chooses to open an account this number should be incremented, never allowing more than 10 accounts to be created. The class should have functions to set up a new account, to search through the open accounts for a specific account number and return the index of the array for that account, and a function to display all available accounts. The class should also have an appropriate constructor and destructor. In the main program the user should be able to choose to open an account and should specify what type of account to open, joint or single. The appropriate type of class should then be dynamically created with the next available array pointer pointing to the new account. The user should also be able to display all account information in the entire list. Other options should be to deposit money, withdraw money, or display the information for a particular account. The account number for the account you wish to make a transaction on should be given. You should create a display function for the jointaccount class that displays both users SSNs, the primary owner's name, the account number, and the balance. The display functions for the account and jointaccount classes should be virtual. Do not modify the classes that have already been written. You may add additional functions if necessary. For example, it may be helpful if you add a function to the account class that returns the account number. This is what you should have them do in lab. It is due on the day of the final. They should bring their disk to class. I will give you copies of example files that illustrate these concepts for you. Note: they do not do much error checking and such, they just show the concepts and give an idea of what I expect. Please let me know if you have any questions. The first part of the lab you should go over this assignment. Then I would appreciate it if you would give a review of the information covered this quarter and answer questions. The following concepts have been covered: Formatting output with C++ constructs Formatting output with printf Input/Output files opening and verifying declaring and implicitly opening checking for end of file reading from and writing to files Obtaining Input cin get getline Pointers rvalues/lvalues using pointers as parameters vs. reference parameters arrays and pointers pointers to functions Passing techniques pass by value pass by reference Dynamic Allocation Strings implementations NULL terminated length prefixed string manipulation (string functions) Structures default passing technique Arrays default passing technique 2-dimensional Sets of objects arrays dynamically allocated arrays lists Abstract Data Types Lists manipulating linked lists Classes types of member definitions private, public, protected constructors destructors inheritance base class vs. derived class types of inheritance public, private extended inheritance multiple inheritance constructor and destructor calling friends friend functions and friend classes Function overloading Operator overloading Recursion Virtual Functions Templates