C++私有继承

私有继承

  • 继承的访问控制
    ①基类的public和protected成员:都以private身份出现在派生类中
    ②基类的private成员:不可直接访问。
  • 访问权限
    ①派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;
    ②通过派生类的对象:不能直接访问从基类继承的任何成员。
#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:private Point  //派生类定义部分
{
public:   //新增公有函数成员
	void initRectangle(float, float, float, float);
	float getX() const;
	float getY() const;
	void move(float, float);
	float getH() const;
	float getW() const;
	~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;

}
float Rectangle::getX() const { return Point::getX(); }
float Rectangle::getY() const { return Point::getY(); }
float Rectangle::getH() const { return h; }
float Rectangle::getW() const { return w; }
void Rectangle::move(float offX, float offY) { Point::move(offX, offY); }

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() const{ return x; }
	float getY() const{ return y; }
	~Point();
private:     //私有数据成员
	float x, y;
};
#endif  //_POINT_H
#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";
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值