#include <iostream> #include <cmath>**** using namespace std; class Book { public: Book(const char *bookTitle) { pTitle = new char[strlen(bookTitle) + 1]; strcpy(pTitle, bookTitle); } void printInfo() const { cout << pTitle << endl; } ~Book() { delete pTitle;*** } private: char *pTitle; }; int main() { char bookTitle[60]; Book *pBook; cout << "Please enter book title: "; gets(bookTitle); Book book(); pBook = book; pBook.printInfo(); return 0; }
时间: 2024-03-09 22:50:56 浏览: 56
使用include <iostream>时一定要加using namespace std
这段代码中有多处错误:
1. `#include <cmath>` 库未被使用,可以删除。
2. `using namespace std;` 没有错误。
3. 在类 `Book` 的析构函数中,应该使用 `delete[]` 释放 `new` 分配的数组内存,而不是使用 `delete`。
4. 在 `main` 函数中,应该使用 `std::cin` 和 `std::cout`,而不是 `gets` 和 `cout`。
5. 在 `main` 函数中,创建对象的方式不正确,应该使用 `new` 创建对象,并且调用对象的方法时应该使用箭头运算符 `->`。
下面是修改后的代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class Book {
public:
Book(const char *bookTitle) {
pTitle = new char[strlen(bookTitle) + 1];
strcpy(pTitle, bookTitle);
}
void printInfo() const {
cout << pTitle << endl;
}
~Book() {
delete[] pTitle;
}
private:
char *pTitle;
};
int main() {
char bookTitle[60];
Book *pBook;
cout << "Please enter book title: ";
cin.getline(bookTitle, 60);
pBook = new Book(bookTitle);
pBook->printInfo();
delete pBook;
return 0;
}
```
阅读全文