#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-20 21:42:12 浏览: 52
#include <iostream> #include<iomanip> using namespace std;九九乘法表
这段代码存在一些问题,我来指出并解释一下。
1. `gets` 函数存在安全问题,应该使用 `fgets` 函数来代替。
2. 在 `main` 函数中,`Book book();` 这一行实际上是声明了一个函数 `book`,而不是创建 `Book` 类型的对象。应该改为 `Book book(bookTitle);`。
3. 在 `main` 函数中,`pBook = book;` 这一行应该改为 `pBook = &book;`,因为 `book` 是一个对象,而不是一个指针。
4. 在 `main` 函数中,`pBook.printInfo();` 这一行应该改为 `pBook->printInfo();`,因为 `pBook` 是一个指针,需要使用箭头运算符来调用成员函数。
修改后的代码如下:
```
#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: ";
fgets(bookTitle, 60, stdin);
Book book(bookTitle);
pBook = &book;
pBook->printInfo();
return 0;
}
```
阅读全文