C++常见笔试题
2015-06-02 14:54
543 查看
Q1. 下面程序的输出结果是?
Q2:设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类,否则出现编译错误。
A2:不能在栈上实例化,而只能在堆上实例化,可以将析构函数私有化,防止自动调用析构函数,必须手动调用;
class CHeapOnly
{
public:
CHeapOnly()
{
cout << "Constructor of CHeapOnly!" << endl;
}
void Destroy() const
{
delete this;
}
private:
~CHeapOnly()
{
cout << "Destructor of CHeapOnly!" << endl;
}
};只能在栈内存上实例化,不能在堆内存上实例化,将new和delete操作符私有化。
class CStackOnly
{
public:
CStackOnly()
{
cout << "Constructor of CStackOnly!" << endl;
}
~CStackOnly()
{
cout << "Destrucotr of CStackOnly!" << endl;
}
private:
void* operator new(size_t size)
{
}
void operator delete(void * ptr)
{
}
};
class A{ public: A(){ cout << "A()" << endl; } ~A(){ cout << "~A()" << endl; } virtual void fun(){ cout << "A:fun()" << endl; } }; class B: public A{ public: B(){ cout << "B()" << endl; } ~B(){ cout << "~B()" << endl; } virtual void fun(){ cout << "B:fun()" << endl; } }; class C: public B{ public: C(){ cout << "C()" << endl; } ~C(){ cout << "~C()" << endl; } private: virtual void fun(){ cout << "C:fun()" << endl; } }; int main() { B b = B(); B *c = new C(); c->fun(); delete c; }A1.参考答案:
A() B() A() B() C() C:fun() ~B() ~A() ~B() ~A()
Q2:设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类,否则出现编译错误。
A2:不能在栈上实例化,而只能在堆上实例化,可以将析构函数私有化,防止自动调用析构函数,必须手动调用;
class CHeapOnly
{
public:
CHeapOnly()
{
cout << "Constructor of CHeapOnly!" << endl;
}
void Destroy() const
{
delete this;
}
private:
~CHeapOnly()
{
cout << "Destructor of CHeapOnly!" << endl;
}
};只能在栈内存上实例化,不能在堆内存上实例化,将new和delete操作符私有化。
class CStackOnly
{
public:
CStackOnly()
{
cout << "Constructor of CStackOnly!" << endl;
}
~CStackOnly()
{
cout << "Destrucotr of CStackOnly!" << endl;
}
private:
void* operator new(size_t size)
{
}
void operator delete(void * ptr)
{
}
};
相关文章推荐
- 一个关于if else容易迷惑的问题
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 一道sql面试题附答案
- C# 超高面试题收集整理
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++中拷贝构造函数的应用详解
- C++中引用(&)的用法与应用实例分析