有股票成员函数有构造函数、析构函数、定义一个书类,其数据成员包括书名、价格、出版日期,并提供出版年限的成员函数,需要重用前面习题的日期类缺省参数、内联函数要有构造函数、析构函数、缺省参数、内联函数
时间: 2023-10-20 15:06:36 浏览: 94
好的,让我来回答你的问题。
对于这个问题,我可以提供如下代码实现:
```
#include<iostream>
#include<string>
using namespace std;
class Date{
private:
int year;
int month;
int day;
public:
Date(int y=0,int m=1,int d=1):year(y),month(m),day(d){}//构造函数
~Date(){}//析构函数
int getYear(){return year;}
void setYear(int y){year=y;}
int getMonth(){return month;}
void setMonth(int m){month=m;}
int getDay(){return day;}
void setDay(int d){day=d;}
void show(){cout<<year<<"/"<<month<<"/"<<day<<endl;}
};
class Book{
private:
string name;
double price;
Date date;
public:
Book(string n,double p,int y=2022,int m=1,int d=1):name(n),price(p),date(Date(y,m,d)){}//构造函数
~Book(){}//析构函数
void setBook(string n,double p,int y=2022,int m=1,int d=1){
name=n;
price=p;
date.setYear(y);
date.setMonth(m);
date.setDay(d);
}
void show() {
cout<<"书名:"<<name<<endl;
cout<<"价格:"<<price<<endl;
cout<<"出版日期:";
date.show();//调用日期类的show函数输出出版日期
}
int getYears() {
int nowyear = 2022; //当前年份,根据实际情况自行更改
return nowyear - date.getYear();
}
};
int main() {
Book book("C++ Primer Plus",99.0,2021,1,1);
book.show();
cout<<"出版年限:"<<book.getYears()<<endl;
return 0;
}
```
解释一下代码的实现,首先我们定义了一个日期类 `Date`,其中包括了年份、月份和日期三个数据成员,同时提供了构造函数、析构函数、获取年份、设置年份等成员函数。注意到这里缺省参数的使用,以及内联函数 `show()` 的定义。
接下来我们定义了一个图书类 `Book`,它包括了书名、价格和出版日期三个数据成员。其中,出版日期用到了之前定义的日期类,因此我们在构造函数中调用日期类的构造函数来初始化日期,同时将书名和价格作为参数传入构造函数初始化。同样地,我们也提供构造函数、析构函数、设置图书信息和获取出版年限等成员函数。
在 `main` 函数中,我们创建了一个 `Book` 对象 `book`,并初始化书名、价格和出版日期,然后调用其成员函数 `show()` 输出图书信息和出版年限。
这就是一个简单的图书类的实现方法,如果你有其他的问题,请随时提出。
阅读全文