以下程序的输出结果为: 调用构造函数 text=abcdef 调用析构函数 #include<iostream.h> /***********此行有错***********/ #include<stdio.h > class string { private: /***********此行有错***********/ char text; public: string(char *ch) { text=new char[strlen(ch)+1]; strcpy(text,ch); cout<<"调用构造函数"<<endl; } /***********此行有错***********/ string print(); { delete[] text; cout<<"调用析构函数"<<endl; } void print(){cout<<"text="<<text<<endl;} /***********此行有错***********/ }: void main() { string string("abcdef"); string.print(); }
时间: 2023-07-05 16:36:06 浏览: 77
这段代码存在多处错误,我来帮你指出并修改:
1. 在头文件 `iostream.h` 和 `stdio.h` 后面应该有分号。
2. 在类 `string` 中,私有成员变量 `text` 应该是一个字符数组,而不是一个字符。
3. 在类 `string` 中,析构函数应该去掉返回类型声明。
4. 在类 `string` 中,成员函数 `print()` 应该是公有的,而不是私有的。
5. 在类 `string` 中,成员函数 `print()` 的实现应该在类的外部,而不是在类的内部。
6. 在类 `string` 中,构造函数中应该使用 `new` 运算符为 `text` 动态分配内存,并将字符串 `ch` 复制到 `text` 中。
7. 在类 `string` 中,析构函数中应该使用 `delete[]` 运算符释放 `text` 动态分配的内存。
8. 在 `main()` 函数中,创建对象时应该使用类名 `string`,而不是对象名 `string`。
修改后的代码如下:
```cpp
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
class string {
private:
char* text;
public:
string(char* ch) {
text = new char[strlen(ch) + 1];
strcpy(text, ch);
cout << "调用构造函数" << endl;
}
~string() {
delete[] text;
cout << "调用析构函数" << endl;
}
void print() { cout << "text=" << text << endl; }
};
int main() {
string str("abcdef");
str.print();
return 0;
}
```
输出结果为:
```
调用构造函数
text=abcdef
调用析构函数
```
阅读全文