【问题描述】
定义一个Document类,有数据成员name,从Document派生出Book类,增加数据成员pageCount。
【输入形式】
程序参考的输入(数据前面文字为提示):
Input Name and Page:Math 280
【输出形式】
程序参考的输出:
Name:Math
Page:280
我写的代码如下:
#include <iostream>
#include<string>
using namespace std;
class Document{ //定义Document类
private:
string name;
public:
Document(string nam):name(nam) //构造函数,构造Document()函数
{
cout<<"Name:"<<name<<endl;
}
~Document(){} //析构函数,释放内存
};
class Book:public Document{ //派生类
private:
int pageCount;
public:
Book(string nam,int ag):Document(nam),pageCount(ag) //构造函数,构造派生类的对象
{
cout<<"Page:"<<pageCount<<endl;
}
~Book(){}
};
int main()
{
int page;
string name;
cout<<"Input Name and Page:";
cin>>name>>page; //输入name和page
Book b(name,page); //传递参数
return 0;
}
我最难理解的地方如下:
Book(string nam,int ag):Document(nam),pageCount(ag) //构造函数,构造派生类的对象
{
cout<<"Page:"<<pageCount<<endl;
}
即Book(string nam,int ag):Document(nam),pageCount(ag)
这行代码。
这里有关C++的继承与派生的知识,派生类构造函数的一般语法为:
派生类名::派生类名(参数表):基类名1(基类1初始化参数表),基类名2(基类2初始化参数表),···
{
派生类构造函数的其他的初始化操作;
}
这里的pageCount(ag)不是基类名,是派生类构造函数的形参。