编程题#10:输出指定结果二(C++程序设计第10周)
2016-02-16 22:01
686 查看
描述
通过填空使得程序输出的结果符合下面的要求。
输入
不需要输入。
输出
使得程序的输出结果是:
2
3
B::destructor
A::destructor
3
4
B::destructor
A::destructor
3
B::destructor
A::destructor
A::destructor
A::destructor
样例输入
样例输出
提示
int A::count = 0; 这个变量是用来记录一共有多少个类A及类A的派生类的对象的。
源码
通过填空使得程序输出的结果符合下面的要求。
#include <iostream> #include <map> using namespace std; // 在此处补充你的代码 int A::count = 0; void func(B b) { } int main() { A a1(5),a2; cout << A::count << endl; B b1(4); cout << A::count << endl; func(b1); cout << A::count << endl; A * pa = new B(4); cout << A::count << endl; delete pa; cout << A::count << endl; return 0; }
输入
不需要输入。
输出
使得程序的输出结果是:
2
3
B::destructor
A::destructor
3
4
B::destructor
A::destructor
3
B::destructor
A::destructor
A::destructor
A::destructor
样例输入
不需要输入。
样例输出
2 3 B::destructor A::destructor 3 4 B::destructor A::destructor 3 B::destructor A::destructor A::destructor A::destructor
提示
int A::count = 0; 这个变量是用来记录一共有多少个类A及类A的派生类的对象的。
源码
#include <iostream> #include <map> using namespace std; //在此处补充你的代码 class A { public: static int count; A() {count++;} A(int a) {count++;} virtual ~A() { cout << "A::destructor" << endl; } /* 使用了delete释放某个重载了delete的类的对象空间时,先调用类的析构函数, 然后再调用重载的delete函数。 */ void operator delete(void* a)//重载delete { count--; } }; class B: public A { public: B():A() {} B(int b):A() {} B& operator = (B& b) { return b; } virtual ~B() { cout << "B::destructor" << endl; } }; int A::count = 0; void func(B b) {} int main() { A a1(5),a2; cout << A::count << endl; B b1(4); cout << A::count << endl; func(b1);//这一块也调用了析构函数和delete,原理尚不清楚 cout << A::count << endl; A* pa = new B(4); cout << A::count << endl; delete pa; cout << A::count << endl; return 0; }
相关文章推荐
- C语言 goto语句
- 编程题#9:人群的排序和分类(C++程序设计第10周)
- 编程题#8:计算整数k(C++程序设计第10周)
- 编程题#7:字符串排序(C++程序设计第10周)
- c++虚拟继承
- 编程题#6:MyString(C++程序设计第10周)
- 20160205.CCPP体系详解(0015天)
- 20160205.CCPP体系详解(0015天)
- C++查找数组中的最大值和最小值
- 20160203.CCPP体系详解(0013天)
- 20160204.CCPP体系详解(0014天)
- 20160203.CCPP体系详解(0013天)
- 20160204.CCPP体系详解(0014天)
- 20160202.CCPP体系详解(0012天)
- 20160202.CCPP体系详解(0012天)
- 编程题#5:计算数组的低3位之和(C++程序设计第10周)
- c++类的成员变量使用普通变量还是指针
- 用c语言代码编写的游戏“简易五子棋”
- 20160131.CCPP体系详解(0010天)
- 20160201.CCPP体系详解(0011天)