Please answer the following questions. For questions
where description is necessary, please be specific and include
at least a couple of sentences of detail. Include examples where
needed. You may use any textbook, WWW, compiler, or code resources that you
would like. Just don't talk to anyone!
Section I: Code analysis (25 pts)
For each of the following pieces of code, answer
the following questions:
// 1.
int& abc()
{
int a = 5;
return a;
}
// 2.
int* bcd()
{
int a = 5;
return &a;
}
// 3.
int* cde()
{
int a = 10;
return a;
}
// 4.
int& def(int &a)
{
return (a = 6);
}
// 5.
int* efg()
{
return new int(3);
}
Section II: Descriptive. (35 pts)
#define NUM 2 #define NUM2 NUM + NUM #define NUM3 3 * NUM2 cout << NUM3 << endl;
Section III: Programming
Below, you have Map.h and main.cpp. Map.h is the prototype for a class, and main.cpp is an example main program which should show you how the class behaves and allow you to test your implementation. Please write Map.cpp. (extra credit:
implement the [] operator for the class instead of getMapping() and addMapping()).
// Map.h.
//
const int MAXMAPS = 100;
//
// Class to store mappings of strings to integers.
//
class Map
{
private:
// Array of the strings and values we've mapped.
// The string in position 0 of _index will correspond
// to the integer in position 0 of _values, and so on.
char* _index[MAXMAPS];
int _values[MAXMAPS];
// Number of strings that have been mapped so
// far. Starts out at 0 and is incremented whenever addMapping()
// is called.
int _numMaps;
public:
// Constructor. Should build a Map with no elements.
Map();
// Copy constructor. Contents of cmap should be copied.
// The map should be left with the same number of elements
// and the same elements (but be sure that the two Maps
// don't share the same data on the heap
Map(const Map& cmap);
// Same comments as above for the copy constructor.
Map&; operator=(const Map& cmap);
// Destructor. Should deallocate all of the strings that were
// Allocated into _index[].
~Map();
// Map str to value. Do this by adding elements into
// the _index and _values array and then incrementing _numMaps.
// If there are more than MAXMAPS mappings, then print an
// error and return.
void addMapping(const char* str, int value);
// Get the mapping of str. Look up str in the _index array
// then return the corresponding integer from _index (this
// routine may be inefficient, but that's OK for this usage.)
// If no mapping exists for this string, return a -1.
int getMapping(const char* str);
};
// Main.cpp. Tests the Map class
//
#include
#include "map.h"
void main()
{
Map mp; // Default constructor
mp.addMapping("Hello",2); // Map "Hello" to 2
mp.addMapping("There",4); // Map "There" to 4.
cout << mp.getMapping("Hello") << endl; // Should print 2
cout << mp.getMapping("There") << endl; // Should print 4
cout << mp.getMapping("Class") << endl; // Should print -1
Map* mp2 = new Map(mp); // Copy constructor
cout << mp2->getMapping("Hello") << endl; // Print 2
mp2->addMapping("Student",3);
cout << mp2->getMapping("Student") << endl; // Print 3
cout << mp.getMapping("Student") << endl; // Print -1
Map mp3;
mp3 = *mp2; // Assignment operator
delete mp2;
cout << mp3.getMapping("Student") << endl; // Print 3
cout << mp.getMapping("Hello") << endl; // Print 2
}