定义一个图书类Book,数据成员包含name(书名)、author(作者)、price(定价),为该类定义构造函数,并提供各数据成员的getXXX()和setXXX()函数。在main函数中创建图书对象数组,并将该数组中的元素按图书价格升序排序。
时间: 2023-11-12 08:14:22 浏览: 94
好的,这是一个经典的面向对象编程问题,以下是代码实现:
```c++
#include <iostream>
#include <algorithm> // std::sort()函数所需的头文件
using namespace std;
class Book {
public:
// 构造函数
Book(string n, string a, double p) : name(n), author(a), price(p) {}
// get函数
string getName() const { return name; }
string getAuthor() const { return author; }
double getPrice() const { return price; }
// set函数
void setName(string n) { name = n; }
void setAuthor(string a) { author = a; }
void setPrice(double p) { price = p; }
private:
string name;
string author;
double price;
};
// 定义一个比较函数,用于排序
bool comparePrice(const Book& b1, const Book& b2) {
return b1.getPrice() < b2.getPrice();
}
int main() {
// 创建图书对象数组
Book books[] = {
{"C++ Primer", "Lippman", 99.9},
{"Thinking in Java", "Eckel", 88.8},
{"Head First Design Patterns", "Freeman", 66.6},
{"Effective C++", "Meyers", 77.7},
{"The C Programming Language", "K&R", 55.5}
};
// 计算数组长度
int length = sizeof(books) / sizeof(books[0]);
// 按价格升序排序
sort(books, books + length, comparePrice);
// 输出排序后的结果
for (int i = 0; i < length; i++) {
cout << "书名:" << books[i].getName() << endl;
cout << "作者:" << books[i].getAuthor() << endl;
cout << "价格:" << books[i].getPrice() << endl;
cout << endl;
}
return 0;
}
```
运行结果如下:
```
书名:The C Programming Language
作者:K&R
价格:55.5
书名:Head First Design Patterns
作者:Freeman
价格:66.6
书名:Effective C++
作者:Meyers
价格:77.7
书名:Thinking in Java
作者:Eckel
价格:88.8
书名:C++ Primer
作者:Lippman
价格:99.9
```
希望这个例子可以帮到你!