继承方式protected

本文介绍了如何在C++中使用Shape和Circle类,展示了继承和封装的运用。Circle类继承自Shape,并保护了Shape的成员,仅允许Circle类内部访问。主要讲解了构造函数、属性设置和形状绘制方法。
摘要由CSDN通过智能技术生成
#include<iostream>
#include<cstring>
using namespace std;

class Shape {
private:
	char name[8];
	char color[8];
public:
	Shape(const char* name = "none", const char* color = "none");
	void SetName(char* name);
	void SetColor(char* color);
	void Draw();
};

class Circle :protected Shape {
	//Shape中所有的成员和方法自动转为protected,所以Shape只能和Circle进行内部交流,Shape自身失去对外直接沟通的桥梁
	//Shape中privated类型的成员和方法仍然保持privated,永远要记住privated是一个元素的固有特性,外界是绝对不能直接修改的
private:
	static const double PI;
	double radius;
public:
	Circle(const char* name = "none", const char* color = "none", double radius = 0);
	double Area();
	void Show();
};


int main() {

	Circle c("circle ", "blue", 10);
	//c.SetName();
	//c.SetColor();
	//c.Draw(); 全部失效
	c.Show();
	return 0;
}


/*******************************************************************/
Shape::Shape(const char* name, const char* color)
{
	strcpy_s(this->name, strlen(name) + 1, name);
	strcpy_s(this->color, strlen(color) + 1, color);
}

void Shape::SetName(char* name)
{
	strcpy_s(this->name, strlen(name) + 1, name);
}

void Shape::SetColor(char* color)
{
	strcpy_s(this->color, strlen(color) + 1, color);
}

void Shape::Draw()
{
	cout << "Draw " << this->name << "with color " << this->color << endl;
}

/*******************************************************************/
const double Circle::PI = 3.14;

Circle::Circle(const char* name, const char* color, double radius) :Shape(name, color) {
	this->radius = radius;
}

double Circle::Area() {
	return PI * radius * radius;
}

void Circle::Show() 
{
	Shape::Draw();
	cout << radius;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值