?? p98temp.cpp
字號:
#include <iostream.h>
#define Pi 3.1415926
class Point {
friend ostream &operator << (ostream &, const Point &);
public:
Point ( float x = 0, float y = 0 ) : x(x) , y(y) { } ; //默認的構造函數
void setPoint ( float, float ); //設置坐標值
float getX ( ) const { return x; } //取得x坐標值
float getY ( ) const { return y; } //取得y坐標值
protected: //允許派生類訪問
float x, y; //點(類Point的對象)的坐標值
};
class Circle : public Point { //類Circle繼承了類Point
friend ostream &operator << ( ostream &, const Circle & );
public:
Circle ( float r = 0.0, float x = 0, float y = 0 ):
radius(r) { center.x = x; center.y = y; }; //默認的構造函數
void setRadius ( float ); //設置半徑值
float getRadius ( ) const { return 2*radius; } //取得半徑值
float area ( ) const { return Pi*Pi*radius; } //計算圓面積
protected:
float radius;
Point center;
} ;
ostream & operator << (ostream& os, const Point & p) {
os << endl << "the point is located at ( " ;
os << p.x << "," << p.y << ")" << endl;
return os;
}
ostream & operator << (ostream& os, const Circle & c) {
os << "the center of circle is located at ( ";
os << " )" <<endl;
os << "the radius is " << c.radius << endl;
return os;
}
main () {
Point * pointPtr, p ( 3.5, 5.3 ); //點p坐標為3.5, 5.3
Circle * circlePtr, c ( 2.7, 1.2, 8.9 ); //圓c半徑為2.7, 坐標為1.2, 8.9
cout << "Point p: " << p << "\n Circle c: " << c << endl;
pointPtr = & c; //把派生類Circle對象的地址賦給了基類指針pointPtr
circlePtr = ( Circle * ) pointPtr; //把基類指針強制轉換為派生類指針
cout << "\n Area of c (via circlePtr) : " << circlePtr -> area ( ) << endl;
pointPtr = & p; //把基類Point對象地址賦給基類指針pointPtr
circlePtr = ( Circle * ) pointPtr; //把基類指針強制轉換為派生類指針
cout << "\n Radius of object circlePtr point to : " << circlePtr -> getRadius ( ) << endl;
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -