一、概念
继承:继承是C++中的一种机制,通过这种机制,我们可以基于已有的旧的数据类型创建出新的数据类型。在C++中,继承分三种:公有继承(public),私有继承(private),保护继承(protected)。不同的继承类型在在访问权限上会有区别。
基类:即被继承的类。
派生类:即由一个已有的类派生过来的新的类。
二、继承
1)公有继承(public)
公有继承指的是基类的公有成员和保护成员保持不变,但派生类无法直接访问私有成员,需要通过基类的公有成员函数或友元函数访问。
2)私有继承(private)
私有继承指的是,在派生类中,基类的公有成员和保护成员都成为了派生类的私有成员,且这个派生类的派生类(子类)无法访问。
3)保护继承(protected)
保护继承是指基类的公有成员和保护成员都成为了派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
4)用表格汇总一下就是......
(图片来自→C++ 中私有继承、保护继承与公有继承)
三、代码
(一段继承的入门辣鸡代码OTZ)
//2019.3.11
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <list>
#include <string>
#include <queue>
#define debug printf("debug\n")
#define mst(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=1e3+5;
class Point{
public:
Point(){};
Point(double xx,double yy);
~Point(){};
void show(){
cout<<x<<" "<<y<<endl;
};
double get_x();
double get_y();
private:
double x;
double y;
double len;
};
double Point::get_x()
{
return x;
}
double Point::get_y()
{
return y;
}
Point::Point(double xx,double yy)
{
x=xx;y=yy;
len=sqrt(x*x+y*y);
}
class GoodPoint:public Point{
public:
GoodPoint(){};
GoodPoint(double xx,double yy);
~GoodPoint(){};
bool isGoodPoint();
void set_point();
void set_point(bool todo);
private:
bool flag;
};
bool GoodPoint::isGoodPoint()
{
double x_get=this->get_x();
double y_get=this->get_y();
if((x_get==0&&y_get==0)||flag)
return true;
return false;
}
void GoodPoint::set_point(bool todo)
{
flag=todo;
}
int main()
{
GoodPoint gp;
printf("%d\n",gp.isGoodPoint());
gp.set_point(1);
printf("%d\n",gp.isGoodPoint());
Point poi(1,23.2);
poi.show();
return 0;
}
未完待续......