静态成员 —— 模拟共享书店
时间: 2023-09-03 20:07:03 浏览: 39
好的,让我们来模拟一个共享书店的例子,并使用静态成员来实现。
首先,我们需要一个`Book`类表示书籍,其中包括书名和作者:
```cpp
class Book {
public:
Book(string title, string author) : title_(title), author_(author) {}
string getTitle() const {
return title_;
}
string getAuthor() const {
return author_;
}
private:
string title_;
string author_;
};
```
接下来,我们需要一个`Bookstore`类来表示书店。我们将使用静态成员变量来存储所有书籍的列表。每当有新书加入或旧书出售时,这个列表都会被更新。
```cpp
class Bookstore {
public:
static void addBook(const Book& book) {
books_.push_back(book);
}
static void sellBook(const Book& book) {
for (auto it = books_.begin(); it != books_.end(); ++it) {
if (it->getTitle() == book.getTitle() && it->getAuthor() == book.getAuthor()) {
books_.erase(it);
break;
}
}
}
static void printBooks() {
cout << "Books in stock:" << endl;
for (const auto& book : books_) {
cout << book.getTitle() << " by " << book.getAuthor() << endl;
}
}
private:
static vector<Book> books_;
};
vector<Book> Bookstore::books_;
```
在这个例子中,`books_`是一个静态成员变量,它是一个`vector`,存储所有在书店中的书籍。
现在我们可以使用`Bookstore`类来添加、出售和打印书籍。下面是一个例子:
```cpp
int main() {
Bookstore::addBook(Book("The Great Gatsby", "F. Scott Fitzgerald"));
Bookstore::addBook(Book("To Kill a Mockingbird", "Harper Lee"));
Bookstore::addBook(Book("1984", "George Orwell"));
Bookstore::printBooks();
Bookstore::sellBook(Book("To Kill a Mockingbird", "Harper Lee"));
Bookstore::printBooks();
return 0;
}
```
输出:
```
Books in stock:
The Great Gatsby by F. Scott Fitzgerald
To Kill a Mockingbird by Harper Lee
1984 by George Orwell
Books in stock:
The Great Gatsby by F. Scott Fitzgerald
1984 by George Orwell
```
可以看到,我们成功地使用了静态成员变量来存储所有书籍的列表,并在添加和出售书籍时更新了它。