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

C/C++面试题四(稍微高级)

2007-06-16 11:23 309 查看
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;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 class delete