C++公有继承

公有继承(public)

  • 继承的访问控制
    ①基类的publicprotected成员:访问属性在派生类中保持不变
    ②基类的private成员:不可直接访问。
  • 访问权限
    ①派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类中的private成员;
    ②通过派生类的对象:只能访问public成员。
#include "Point.h"
#include "Rectangle.h"

int main()
{
	Rectangle rect;                  //定义Rectangle类的对象
	rect.initRectangle(2, 3, 20, 10);//设置矩形的数据
	rect.move(3, 2);                 //移动矩形位置
	cout << "The data of rect(x,y,w,h):";
	cout << rect.getX() << ","       //输出矩形的特征参数
		 << rect.getY() << ","
		 << rect.getW() << ","
		 << rect.getH() << endl;
	return 0;
}
//Rectangle.h
#include "Point.h"

class Rectangle:public Point  //派生类定义部分
{
public:   //新增公有函数成员
	void initRectangle(float, float, float, float);
	float getH() const { return h; }
	float getW() const { return w; }
	~Rectangle();
private:  //新增私有数据成员
	float w, h;
};
//Rectangle.cpp
#include "Rectangle.h"

void Rectangle::initRectangle(float x,float y,float w,float h)
{
	initPoint(x, y); //调用基类公有成员函数
	this->w = w;
	this->h = h;
}
Rectangle::~Rectangle()
{
   cout << "Destructing Rectangle...\n";
}
//Point.h
#ifndef _POINT_H
#define _POINT_H
#include <iostream>

using namespace std;

class Point   //基类Point类的定义  
{
public:       //公有函数成员
	void initPoint(float,float);
	void move(float, float);
	float getX() { return x; }
	float getY() { return y; }
	~Point();
private:     //私有数据成员
	float x, y;
};

#endif  //_POINT_H
//Point.cpp
#include "Point.h"

void Point::initPoint(float x = 0,float y = 0)
{
	this->x = x;
	this->y = y;
}
void Point::move(float offX, float offY)
{
	x = x + offX;
	y = y + offY;
}

Point::~Point()
{
	cout << "Destructing Point...\n";
}

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值