## Answers to Final Exam (on 25 August 2003)

1.  (a)  a can not be modified
(b)  b points to a fixed address
(c)  c points to const int, *c cannot be modified
(d)  d has the properties of (b) and (c)
(e)  the function f() does not modify *e
(f)  g() does not modify member data
(g)  h() returns a const reference, thus cannot be a lvalue

2.
(a) static variable i is initialized once to 0 for the first call;
value of i is retained between several calls to f().
(b) static member data j is shared by all instances of the class;
it exists even before the creation of any object.  We can access
by Test::j or obj.j.
(c) static member function is used to access static member data;
Can be used before any object is created, by Try::fun().

3.
(a) 1 or 3  (e.g. int j = int();)
(b) 3
(c) 3
(d) 1
(e) 3
(f) 3   (cannot return a local variable)

4.  (a)  ofstream myfile("data.dat", ios::out);
for(int i = 0; i < 10; ++i) {
myfile << i << endl;
}
(b)  n = strlen(a);
b = new char[n+1];
strcpy(b, a);
(c)  int countf(void) {
static int cnt = 0;
return ++cnt;
}
(d)  template
T myabs(T x) {
return (x < 0)? -x : x;
}
(e)  double myabs(complex x)
{
return sqrt(x.re*x.re + x.im*x.im);
}
// assume complex is defined as a structure

5.
(a) public:
(b) a[5][2];
(c) for(i = 0; i < 10; ++i) { }
(d) x = (a < b)? 0 : 1;
(e) int *const p = &i;
(f) ~B();
(g) T f(T y) { ... }

6.
See program matrix.cpp.