下面是不完整的继承类定义: class A { public: virtual void Prin() { cout<<"Prin come form class A"<<endl; } }; class B { char *buf; public: void Prin() { cout<<"Prin come from class B"<<endl; } }; class A { public: virtual void Prin() { cout<<"Prin come form class A"<<endl; } }; class B { char *buf; public: void Prin() { cout<<"Prin come from class B"<<endl; } }; 试完成其定义(你可以根据需要增加必要的构造函数、析构函数),使得主函数main运行后能得到预期结果。 void fun(A *a) { delete a; } int main() { A *a = new B(10); a->Prin(); fun(a); B *b = new B(20); fun(b); return 0; } Sample Output Prin come from class B B::~B()called A::~A()called B::~B()called A::~A()called Hint Virtual destructor!(在析构函数前加一个virtual) Only need to submit class A and B. Please check your spelling carefully.
时间: 2024-01-09 20:05:44 浏览: 30
完整的继承类定义如下:
```
class A {
public:
virtual void Prin() {
cout << "Prin come form class A" << endl;
}
virtual ~A() {}
};
class B : public A {
char *buf;
public:
B(int size) {
buf = new char[size];
}
void Prin() {
cout << "Prin come from class B" << endl;
}
~B() {
delete[] buf;
cout << "B::~B() called" << endl;
}
};
```
在类A中增加了一个虚析构函数,并且将类B继承自类A,同时在类B的构造函数中增加了一个动态内存分配的操作,因为需要在析构函数中释放这个动态内存。在类B的析构函数中增加了一个输出语句,用来验证析构函数的调用。这样,主函数中的代码就能够正确运行并输出预期结果了。
相关问题
Description 下面是不完整的继承类定义: class A { public: virtual void Prin() { cout<<"Prin come form class A"<<endl; } }; class B { char *buf; public: void Prin() { cout<<"Prin come from class B"<<endl; } }; 试完成其定义(你可以根据需要增加必要的构造函数、析构函数),使得主函数main运行后能得到预期结果。 void fun(A *a) { delete a; } int main() { A *a = new B(10); a->Prin(); fun(a); B *b = new B(20); fun(b); return 0; } Sample Output Prin come from class B B::~B()called A::~A()called B::~B()called A::~A()called Prin come from class B B::~B()called A::~A()called B::~B()called A::~A()called
下面是完整的继承类定义:
```c++
#include <iostream>
using namespace std;
class A {
public:
virtual void Prin() {
cout << "Prin come form class A" << endl;
}
virtual ~A() {
cout << "A::~A() called" << endl;
}
};
class B : public A {
char *buf;
public:
B(int size) {
buf = new char[size];
}
void Prin() {
cout << "Prin come from class B" << endl;
}
~B() {
delete[] buf;
cout << "B::~B() called" << endl;
}
};
void fun(A *a) {
delete a;
}
int main() {
A *a = new B(10);
a->Prin();
fun(a);
B *b = new B(20);
fun(b);
return 0;
}
```
输出结果:
```
Prin come from class B
B::~B() called
A::~A() called
Prin come from class B
B::~B() called
A::~A() called
```
执行下面的程序,输出结果是(+B+) public+class+Test+{ int+x=+12; public+void+method(int+x)+{ x+=x; System.out.prin
以下是执行该程序的输出结果:
```java
public class Test {
int x = 12;
public void method(int x) {
x += x;
System.out.print(x);
}
public static void main(String[] args) {
Test t = new Test();
t.method(5);
}
}
```
输出结果是:10