编程题#10:输出指定结果二
来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
总时间限制: 1000ms 内存限制: 1024kB
描述
通过填空使得程序输出的结果符合下面的要求。
#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的派生类的对象的。
1 #include <iostream> 2 #include <map> 3 using namespace std; 4 // 在此处补充你的代码 5 class A { 6 public: 7 static int count; 8 A(){count++;} 9 A(int a) {count++;} 10 virtual ~A(){ 11 cout<<"A::destructor"<<endl; 12 } 13 void operator delete(void *a) { 14 count--; 15 } 16 }; 17 class B:public A { 18 public: 19 B():A(){} 20 B(int b):A(){} 21 B &operator=(B &b) { 22 return b; 23 } 24 virtual ~B(){ 25 cout<<"B::destructor"<<endl; 26 } 27 }; 28 int A::count = 0; 29 void func(B b) {} 30 int main() 31 { 32 A a1(5),a2; 33 cout << A::count << endl; 34 B b1(4); 35 cout << A::count << endl; 36 func(b1); 37 cout << A::count << endl; 38 A * pa = new B(4); 39 cout << A::count << endl; 40 delete pa; 41 cout << A::count << endl; 42 return 0; 43 }