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

c++访问控制和类作用域,第1张

一、访问控制

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、此外还有:通过基类调用隐藏的函数、覆盖重载的函数等 *** 作

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存