Re: Pointers, auto-pointers, etc.
On Dec 1, 2:04 pm, robean <st1...@gmail.com> wrote:
Question for more advanced programmers from a relative newbie:
I am trying to get together a bunch of code-samples for interviews,
and have been advised to keep them short (300 - 500 lines, approx.).
Can anyone suggest such a short project that explicitly uses
pointers?
Here are a few that intermediate C++ programmers should get most of:
1. Rewrite this such that _parent and _child are automatically cleaned
up, and suitable for use in a std container
struct C;
struct P{
C * _child;
};
P::P(){
_child=new C(this);
}
struct C{
P* _parent;
C(P*p):_parent(p){}
};
2. using shared_ptr, fix the resource leaks
DO NOT use a catch block (extra credit: consider the exceptions that
shared_ptr ctor may throw)
FILE* fp=fopen("blah","rb");
void * buf =new char[100];
if(1!=fread(buf,100,1,fp)throw std::runtime_error("Oops!");
delete buf;
fclose(fp);
3. Describe the bugs in struct A2, then fix them
//A, B are from a legacy library we cannot modify
struct A{ /*data*/ };
struct B{
//makeB takes a shared_ptr, but will not keep a copy once it returns
//should have been written make(A const&)
static auto_ptr<B>make(shared_ptr<A>const&);
private:
B();
//data....
};
//Our stuff is riddled with bugs...
struct A2:A,protected enable_shared_from_this<A>{
A2():_b(B::make(shared_from_this()){}
shared_ptr<B>_b;
};
4. What is wrong with foo(), and list three ways to fix
struct D{
D():s(1000){}
std::vector<int> s;
};
void foo(int n){
auto_ptr<D> d(new D[n]);
//init and use d
}
5. fill in for expX
double d[50];
float* f=new float[50];
std::generate(exp1,exp2,rand);//fill d with random numbers
std::copy(exp3,exp4,exp5);//copy d to f
Lance
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]