📄 arts.cpp
字号:
/************************************
* 继承和多态演示程序:艺术品类
* 达内,陈宗权,2006/8
************************************/
#include <iostream>
#include <string>
using namespace std;
//艺术品类,用作基类
class Arts
{
string author;//作者
string title;//标题
int year;//创作年份
protected:
string type;//种类
public:
//构造函数
Arts( string au, string ti, int y )
:author(au),title(ti),year(y),type("Arts")
{}
//虚函数,显示信息
virtual void show()const
{
cout<<type<<":"<<author<<","<<title<<","<<year;
}
//虚析构函数
virtual ~Arts(){}
};
//油画类,艺术品子类
class Painting: public Arts
{
float width;//宽度
float height;//高度
public:
//构造函数
Painting( string au, string ti, int y, float w, float h )
:Arts(au,ti,y),width(w),height(h)
{type="Painting";}
//显示信息
void show()const
{
Arts::show();
cout<<",size "<<width<<"x"<<height;
}
};
//音乐类,艺术品子类
class Music: public Arts
{
string key;//关键信息
public:
//构造函数
Music( string au, string ti, int y, string k)
:Arts(au,ti,y),key(k)
{type="Music";}
//显示信息
void show()const
{
Arts::show();
cout<<","<<key;
}
};
class Chamber: public Music
{//室内乐类,音乐子类
int players;//演奏人数
public:
//构造函数
Chamber( string au, string ti, int y, string k, int p )
:Music( au,ti,y,k ),players(p)
{type="Chamber";}
//显示信息
void show()const
{
Music::show();
cout<<","<<players<<" players";
}
};
//控制台类
class console
{
public:
//用静态函数显示艺术品的信息
static void show( const Arts& a )
{
a.show();
cout<<endl;
}
};
int main()
{
Painting op("Darinci","Mona Lisa",1503,24,32);
Music om("Beethoren","Symphony no.9",1824,"D major");
Chamber oc("Mozat", "Hoffmeister",1786,"D minor", 4 );
console::show( op );
console::show( om );
console::show( oc );
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -