指出下列程序的错误,说明错误的原因并改正。 #include <iostream> using namespace std; class A { int *p; A(int n) { p=new int; *p = n; } show(); ~A() { delete p; } }; show() { cout << *p << endl; } int main() { A a; a.show(); return 0; }
时间: 2024-01-28 17:05:32 浏览: 18
使用include <iostream>时一定要加using namespace std
该程序存在以下几个错误:
1. 在类A中的构造函数没有声明为public,导致在main函数中无法实例化该类对象。
2. 在类A中的show函数没有声明为public或者private,导致该函数的访问权限默认为private,不可被main函数中的对象访问。
3. 在main函数中实例化A对象时,应该传入一个int类型的参数,但是该程序没有传参。
4. 在类A中的析构函数没有声明为public,导致在main函数中无法执行该对象的析构函数。
下面是修改后的程序:
```c++
#include <iostream>
using namespace std;
class A {
private:
int *p;
public:
A(int n) {
p=new int;
*p = n;
}
void show() {
cout << *p << endl;
}
~A() {
delete p;
}
};
int main() {
A a(10);
a.show();
return 0;
}
```
在修改后的程序中,我们将类A中的构造函数、析构函数和show函数都声明为public,同时在main函数中实例化A对象时传入了一个int类型的参数,程序就可以正确运行了。
阅读全文