//Point.h #ifndef _POINT_H #define _POINT_H class Point{ public: void initPoint(float x = 0, float y = 0){ this->x = x; this->y = y; } void move(float offX, float offY){ x += offX; y += offY; } float getX() const { return x; } float getY() const { return y; } private: float x, y; }; #endif //Rectangle.h #ifndef _RECTANGLE_H #define _RECTANGLE_H #include "Point.h" class Rectangle: public Point{ //派生类定义部分 public: void initRectangle(float x, float y, float w, float h){ //新增公有函数 initPoint(x, y); //调用基类共有成员函数 this->w = w; this->h = h; } float getH() const { return h; } float getW() const { return w; } private: float w, h; }; #endif /*公有继承*/ #include <iostream> #include <cmath> #include "Rectangle.h" using namespace std; int main(){ Rectangle rect; rect.initRectangle(2, 3, 20, 10); rect.move(3, 2); cout <<"The data of rect(x, y, w, h): " << endl; cout << rect.getX() << ", " << rect.getY() << ", " << rect.getW() << ", " << rect.getH() << endl; return 0; }
/*私有继承*/ #include <iostream> using namespace std; class Point{ public: void initPoint(float x = 0, float y = 0){ this->x = x; this->y = y; } void move(float offX, float offY){ x += offX; y += offY; } float getX() const { return x; } float getY() const { return y; } private: float x, y; }; class Rectangle: private Point{ //派生类定义部分 public: void initRectangle(float x, float y, float w, float h){ //新增公有函数 initPoint(x, y); //调用基类共有成员函数 this->w = w; this->h = h; } void move(float offX, float offY){ Point::move(offX, offY); //私有继承而来的成员函数在类外不能直接访问,必须要在类里定义访问接口 } float getX() const { return Point::getX(); } float getY() const{ return Point::getY(); } float getH() const { return h; } float getW() const { return w; } private: float w, h; }; int main(){ Rectangle rect; rect.initRectangle(2, 3, 20, 10); rect.move(3, 2); cout <<"The data of rect(x, y, w, h): " << endl; cout << rect.getX() << ", " << rect.getY() << ", " << rect.getW() << ", " << rect.getH() << endl; return 0; }