首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++之继承访问控制权限

C++之继承访问控制权限

作者头像
zy010101
发布2020-04-08 16:43:05
6080
发布2020-04-08 16:43:05
举报
文章被收录于专栏:程序员程序员

子类在继承时可以选择public,protected,private三种方式去继承。这三种方式都将继承父类的所有函数成员(除过构造函数和析构函数)和数据成员,但是继承以后的访问控制权限会发生变换。

首先我们给出一个父类。来看看子类的继承方式是否影响它继承父类的所有函数成员(除过构造函数和析构函数)和数据成员。

由于成员函数存储在代码段,类的大小仅仅指类的数据成员的大小。我们从类的大小上来说明子类会继承父类的所有函数成员(除过构造函数和析构函数)和数据成员。在public,protected,private下面都放一个变量,来让测试说明问题。

#pragma once
#include <iostream>

using namespace std;

class Parent
{
public:
	double x;
protected:
	double b;
private:
	double c;
};

class Child1 : public Parent
{
public:

protected:

private:

};

class Child2 : protected Parent
{
public:

protected:

private:

};

class Child3 : private Parent
{
public:

protected:

private:

};
#include"标头.h"

int main()
{
	cout << "Parent的大小:" << sizeof(Parent) << endl;
	cout << "Child1的大小:" << sizeof(Child1) << endl;
	cout << "Child2的大小:" << sizeof(Child2) << endl;
	cout << "Child3的大小:" << sizeof(Child3) << endl;

	return 0;
}

测试结果:

可以看到无论是什么继承方式,子类都会继承父类的所有函数成员(除过构造函数和析构函数)和数据成员。

那么这三种继承方式有什么不同呢?

public继承: 继承以后父类的public成员在子类仍旧是public成员,父类的protected成员在子类仍旧是protected成员。 父类的private成员在子类中不可访问。

protected继承: 继承以后父类的public成员在子类中变成protected成员,父类的protected成员在子类仍旧是protected成员 。父类的private成员在子类中不可访问。

private继承: 继承以后父类的public成员在子类中变成private成员,父类的protected成员在子类中变成private成员 ,父类的private成员在子类中不可访问。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档