分享

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

 ShangShujie 2007-04-10
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;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多