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

POJ C++程序设计 编程题#10:输出指定结果二

2015-09-23 22:15 603 查看

编程题#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的派生类的对象的。

#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;
}
void operator delete(void *a) {
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);
cout << A::count << endl;
A * pa = new B(4);
cout << A::count << endl;
delete pa;
cout << A::count << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: