完善下列代码并输出结果include suing namespace std; class Testing{private:string words;int number; public:Testing(const string&s="Testing"){word=s; number=words.length(); if(words.compare("Testing")==0)cout<<1; else if(words.compare("Heap1")==0)cout<<2; else cout<<3; } ~Testing(){cout<<0;} void show()const{cout<number;} }; int main(){ Testing *pc1,*pc2; pc1=new Testing; pc2+new Testing("Heap1"); pc1->show(); delete pc1; delete pc2; return 0; }
时间: 2023-12-05 08:03:51 浏览: 76
代码中有一个错误,应该是 `pc2 = new Testing("Heap1");` 而不是 `pc2 + new Testing("Heap1");`。
修改后的完整代码并输出结果如下:
```cpp
#include <iostream>
using namespace std;
class Testing{
private:
string words;
int number;
public:
Testing(const string& s = "Testing"){
words = s;
number = words.length();
if(words.compare("Testing") == 0){
cout << 1;
}
else if(words.compare("Heap1") == 0){
cout << 2;
}
else{
cout << 3;
}
}
~Testing(){
cout << 0;
}
void show() const{
cout << number;
}
};
int main(){
Testing *pc1, *pc2;
pc1 = new Testing;
pc2 = new Testing("Heap1");
pc1->show();
delete pc1;
delete pc2;
return 0;
}
```
输出结果为:
```
1320
```
解释:
- 第一个 Testing 对象是默认构造函数创建的,words 的默认值是 "Testing",所以输出 1,然后执行 show(),输出 words 的长度 3。
- 第二个 Testing 对象是使用带参数的构造函数创建的,参数为 "Heap1",所以输出 2,然后执行 show(),输出 words 的长度 5。
- 最后依次调用两个 Testing 对象的析构函数,输出 0。
阅读全文