📄 612.cpp
字号:
/*
612.CPP
demo 继承的技术
Written by Feng
class
P(Point)
E(Ellipse)
C(Circle)
*/
#include <iostream.h>
class P
{
private:
int x,y;
public:
P(int a=0,int b=0) : x(a), y(b) {}
int GetX(){ return x;}
int GetY(){ return y;}
};
class E : public P //Ellipse
{
private:
int len1,len2; //long oce and short oce
public:
E(int o1, int o2, int a=0,int b=0)
:P(a,b){len1=o1;len2=o2;}
E(P o,int a,int b):P(o.GetX(),o.GetY() ) //must use P::P(),else cannot access x,y
{ len1=a; len2=b; }
E(P o):P(o.GetX(),o.GetY() ) //must use P::P(),else cannot access x,y
{ len1=100; len2=200; }
int GetL1(){ return len1;}
int GetL2(){ return len2;}
};
class C: public E //circle
{
private:
void GetL1(){} //! 'delete' the class E member
void GetL2(){}
public:
C(int r,int a,int b):E(r,r,a,b){}
int GetR(){ return E::GetL1() ; }
};
main(void)
{
P p(-1,-1), *pP;
E e(10,12,4) ;
C c(5, 7,9), *pC;
//c.GetL1();-->is not accessible
cout << "Ellipse X = " << e.GetX() << " ;Y=" << e.GetY()
<< ";L1=" << e.GetL1() << ";L2=" << e.GetL2() << endl;
cout << "Circle X = " << c.GetX() << " ;Y=" << c.GetY()
<< ";R =" << c.GetR() << endl;
p = c; //circle -> point
cout << "Point X = " << p.GetX() << " ;Y=" << p.GetY() << endl;
// << ";R="<< p.GetR() //not a member !!!
e = p; // only if defined E::E(p)
cout << "Ellipse X = " << e.GetX() << " ;Y=" << e.GetY()
<< ";L1=" << e.GetL1() << ";L2=" << e.GetL2() << endl;
pP = &e;
cout << "Point X = " << pP->GetX() << " ;Y=" << pP->GetY() << endl;
//<< ";L1="<< e.GetL1() // not a member
//pC = &p; //cannot convert
pC = (C *)&p; //ok
cout << "Point X = " << pC->GetX() << " ;Y=" << pC->GetY()
<< ";R=" << pC->GetR() << endl;
return 0;
}
/*
Ellipse X = 4 ;Y=0;L1=10;L2=12
Circle X = 7 ;Y=9;R =5
Point X = 7 ;Y=9
Ellipse X = 7 ;Y=9;L1=100;L2=200
Point X = 7 ;Y=9
Point X = 7 ;Y=9;R=6618672
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -