栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++访问控制和类作用域

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++访问控制和类作用域

一、访问控制

1、每个类分别控制着自己成员的初始化过程,也控制着其成员对于派生类来说是否可以访问

2、派生类的成员和友元(函数、类等)只能通过派生类对象来访问基类的受保护成员,派生类对于一个基类对象中的受保护成员没有任何访问权限

3、类对继承而来的成员的访问权限受两个因素影响:基类中该成员的访问说明符;派生列表中的访问说明符

派生访问说明符对于派生类的成员(及友元)能否访问直接基类的成员没有影响,对基类成员的访问权限只与基类中的访问说明符有关

派生访问说明符的目的是控制其派生类用户(包括派生类的派生类)对于基类成员的访问权限;还可以控制继承自派生类的新类的访问权限

4、就像友元关系不能传递一样,友元关系同样不能继承

5、有时我们需要改变派生类继承的某个名字的访问级别,可以使用using声明

class A
{
public:
	void size(){}
protected:
	int n;
};
class B :private A    //私有继承
{
public:
	using A::size;    //B的用户可以使用size成员
protected:
	using A::n;       //B的派生类将可以使用n
};
class C :public B
{
	int cc;
	C()
	{
		cc = n;
	}
};

6、对于struct其默认的派生访问说明符是public,而对于class其默认的是private

二、类作用域

1、继承关系中的作用域嵌套,类似于全局变量和局部变量,当一个名字在派生类的作用域无法正确解析时,则向外层的基类作用域寻找给该名字的定义

2、如果在派生类中定义基类中的名字,那么此时定义在内层作用域(派生类)的名字将隐藏外层的名字

3、可以通过作用域运算符来使用被隐藏的成员

4、由此可见,只有基类和派生类拥有相同的形参列表,才可以通过基类的引用或指针调用派生类的虚函数

5、此外还有:通过基类调用隐藏的函数、覆盖重载的函数等操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/861966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号