Lab 4: Introduction to C++
Goals for this lab
By the time you have completed this lab, you should be able to
- create your own class with custom constructors and destructor
- create and use methods for your class
The purpose of this lab is to get you familiar with C++ basics.
Lab pairing
For this lab you may work with a partner. Please, team up with the same person you were working on the previous labs. When working with a partner, I strongly encourage you follow the pair programming method of working together.
Lab preparation
After logging in, create the directory for this lab:
mkdir -p cs24/lab4
Change into the lab2 directory and copy the files you will need for this lab:
cd cs24/lab4
cp ~bboe/public_html/cs24_m13/code/lab4/* .
Open up README.txt with your favorite text editor and be sure to add your and your partner’s name so that you both receive credit.
Building MyVec class
You are provided with the files Makefile, main.cpp, and vec.h. In this lab, you will need to add all the functionality that main.cpp expects from the MyVec class. Given all methods declarations in vec.h, you will have to write the corresponding implementations in vec.cpp.
Step 1: Add the constructors
Completing this step will allow you to build the program main by running make.
You will need to declare and define the two constructors and a destructor. The
first one should only take array size, the second one should also take a
pointer to some int array. Both of the constructors should allocate memory for
integer array (do not use vector
template). The destructor should delete
allocated memory. Here is an example of allocating and releasing memory in
C++:
int *tmp = new int[2048];
delete []tmp;
Note: starting from this lab you are not allowed to use malloc
(or associated
functions), realloc
or free
. Please, use appropriate C++ syntax.
Step 2: Add the getters and setters
Next you will need to define the getters and setters for your class. Once you have done that, comment out the appropriate lines in main.cpp to verify you have correctly done the implementation.
Step 3: Add instance method add_immediate
Next, you will need to implement this method in order to be able to add two vectors. This method takes a constant reference to another vector as an input and stores result in the initial object. When you use the method, you will be making a call
vec_0.add_immediate(vec_1);
The result should be stored in vec_0
.
Here are few examples of how vector addition works. For two vectors of the same size let:
vec_0 = (1, 2, 3), vec_1 = (4, 5, 6)
After calling vec_0.add_immediate(vec_1)
:
vec_0 = (5, 7, 9)
For two vectors of two different sizes let:
vec_0 = (1, 2), vec_1 = (4, 5, 6)
After calling vec_0.add_immediate(vec_1)
:
vec_0 = (5, 7)
Another example of two different sized vectors:
vec_0 = (1, 2, 3), vec_1 = (4, 5)
After calling vec_0.add_immediate(vec_1)
:
vec_0 = (5, 7, 3)
Hint: You might want to use the std::min
function to help you in this
step. Here’s an example usage:
int min_size = std::min(4, 27); // returns 4 as it is the smaller value
Once you have implemented this method, comment out the appropriate lines in
main.cpp
to verify you have correctly done the implementation.
Submitting the project
Only one person in a group need submit the project. If both members of a group submit we will only score the last submission made between the two group members. Please review the submission instructions as needed. On the submission site you will find the command you need to use to submit the project. Note that you may resubmit this project as many times as necessary up until the deadline.