解释下面这段代码:#include<iostream> #include<string> using namespace std; // 基类 class Buyer{ protected: string name; // 姓名 string id; // 购书人编号 string address; // 地址 float pay; // 购书金额 public: Buyer(string n,string i,string a,float p){ name = n; id = i; address = a; pay = p; } virtual void setPay(){} // 定义虚函数 virtual void display(){} // 定义虚函数 string getName(){ return name; } string getAddress(){ return address; } float getPay(){ return pay; } string getId(){ return id; } }; // 派生类1:会员 class Member:public Buyer{ private: int level; // 会员级别 public: Member(string n,string i,string a,float p,int l):Buyer(n,i,a,p){ level = l; } void setPay(){ // 重写虚函数 switch(level){ case 1: pay = pay * 0.95; break; case 2: pay = pay * 0.9; break; case 3: pay = pay * 0.85; break; case 4: pay = pay * 0.8; break; case 5: pay = pay * 0.7; break; } } void display(){ // 重写虚函数 cout<<"姓名:"<<name<<endl; cout<<"编号:"<<id<<endl; cout<<"地址:"<<address<<endl; cout<<"应付金额:"<<pay<<endl; cout<<"会员级别:"<<level<<endl; } };
时间: 2024-04-04 13:28:57 浏览: 75
这段代码是一个简单的面向对象程序,定义了一个基类 Buyer 和一个派生类 Member,其中 Member 继承了 Buyer 的属性和方法,并且重写了基类中的虚函数 setPay 和 display。
在该程序中,Buyer 是一个基类,其中定义了一些成员变量和方法,包括姓名、购书人编号、地址、购书金额等,还定义了两个虚函数 setPay 和 display。而 Member 是一个派生类,继承了基类 Buyer 的属性和方法,并且增加了一个会员级别属性,同时重写了基类中的虚函数 setPay 和 display。
在 Member 类中,setPay 函数根据会员级别来计算购书金额,并且重写了基类中的 setPay 函数;而 display 函数用于输出购书人的信息,并且重写了基类中的 display 函数。这里需要注意的是,setPay 和 display 函数都是虚函数,因此可以通过基类指针或引用来调用派生类中的函数。
整个程序中使用了命名空间 std,包含了头文件 iostream 和 string。同时,为了方便访问类中的成员变量和方法,使用了关键字 using namespace std。
相关问题
定义student基类:数据成员name及其set和get函数,无参和有参构造函数,show()
以下是定义student基类的示例代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
class student {
public:
student() {}
student(const string& name) : name_(name) {}
void setName(const string& name) {
name_ = name;
}
string getName() const {
return name_;
}
void show() const {
cout << "Name: " << name_ << endl;
}
private:
string name_;
};
```
该基类包含一个数据成员`name_`,以及对应的set和get函数。同时,它还包含无参和有参构造函数以及一个名为`show()`的成员函数,用于打印输出数据成员的值。
阅读全文