文章目录
普通继承
例题:定义一个名为Phone的手机类,有如下私有成员变量:品牌、型号、CPU、电池容量,如下成员函数:构造函数初始化手机的信息。在此基础上派生出NewPhone类,派生类增加了两个新的私有数据成员,分别用于表示颜色和价格,增加了一个成员函数用来输出手机信息。
代码如下:
using namespace std;
class Phone
{
public:
string pinpai;
string xinghao;
string CPU;
string dianchi;
Phone(string s1, string s2, string s3, string s4);
void Print();
private:
};
Phone::Phone(string s1, string s2, string s3, string s4)
{
pinpai = s1;
xinghao = s2;
CPU = s3;
dianchi = s4;
}
void Phone::Print()
{
cout << "手机的品牌是:" << pinpai << endl;
cout << "手机的型号是:" << xinghao << endl;
cout << "手机的CPU是:" << CPU << endl;
cout << "手机的电池容量是:" << dianchi << endl;
}
class NewPhone :public Phone
{
string color;
string price;
public:
NewPhone(string s1, string s2, string s3, string s4, string s5, string s6) :Phone(s1, s2, s3, s4), color(s5), price(s6)
{
}
void Print() {
Phone::Print();
cout << "手机的颜色是:" << color << endl;
cout << "手机的价格是:" << price << endl;
}
};
int main()
{
NewPhone B("华为", "mate", "很大", "1000mA", "黄色", "100000");
B.Print();
system("pause");
return 0;
}
结果如下:
菱形继承
写一个菱形继承,如下图所示:
写出类的具体结构和方法。
//兽王
class AnimalKing
{
public:
int weight;
int height;
int leg;
void getWeight()
{
cout << "请输入狮虎兽的体重:";
cin>>weight;
};
void getHeight()
{
cout << "请输入狮虎兽的身高:";
cin >> height;
};
void getLeg()
{
cout << "请输入狮虎兽的腿数:";
cin >> leg;
};
};
//老虎
class Tiger : virtual public AnimalKing
{
public:
void Putweight()
{
cout << "继承了老虎的体重"<< weight<< endl;
}
void Putheight()
{
cout << "继承了老虎的身高" << weight << endl;
}
void Putleg()
{
cout << "继承了老虎的腿数" << weight << endl;
}
};
//狮子
class Lion : virtual public AnimalKing
{
public:
void Putweight()
{
cout << "继承了狮子的体重" << weight << endl;
}
void Putheight()
{
cout << "继承了狮子的身高" << weight << endl;
}
void Putleg()
{
cout << "继承了狮子的腿数" << weight << endl;
}
};
//狮虎兽
class Liger : public Tiger, public Lion
{
public:
~Liger()
{
cout << "狮虎兽诞生了!" << endl;
}
};
int main()
{
Liger a;
a.Tiger::getWeight();
a.Tiger::Putweight();
a.Lion::getHeight();
a.Lion::Putheight();
a.Lion::getLeg();
a.Tiger::getLeg();
a.Lion::Putleg();
a.Tiger::Putleg();
return 0;
}
结果如下: