您的位置:首页 > 编程语言 > C语言/C++

4道稍微高级点的c++面试题,供初学者一窥门径

2007-04-09 17:15 295 查看
1.写出下面程序的输出

class abc;
void del(abc *pobj){
 delete pobj;
}

class abc{
public:
 abc(){
  printf("abc/r/n");
 }
 ~abc(){
  printf("~abc/r/n");
 }
};

int main()
{
 abc *pobj = new abc;
 del(pobj);
}

 

2.写出下面程序的输出

void* operator new(size_t size)
{
 printf("malloc %u/r/n", size);
 return malloc(size);
}
void operator delete(void *memblock){
 printf("free/r/n");
 return free(memblock);
}

class abc{
public:
 abc(){
  printf("abc/r/n");
  throw int();
 }
 ~abc(){
  printf("~abc/r/n");
 }
};

int main(){
 try{
  new abc;
 }catch(int& i){
  printf("%d/r/n", i);
 }
 return 0;
}

 

3.写出下面程序的输出

template <typename T>
class abc{
public:
 abc(){
  printf("primary/r/n");
 }
};

template<>
abc<int>::abc(){
 printf("member spec/r/n");
};

template<typename T, typename P>
class abc<T (*)(P)>{
public:
 abc(){
  printf("partial spec/r/n");
 }
};

int main()
{
 abc<void* (*)(int)> f_abc;
 abc<int> i_abc;
}

4.下面的代码能否通过编译?为什么

class a{
public:
 virtual ~a(){
 }
private:
 void operator delete(void *p);
};

int main()
{
 a _1;
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 面试 class delete