对于C++中访问控制说明

开发 后端
对于C++中访问控制在一些领域做出的贡献以来,就可以进行重点的讨论怎样正确学习和掌握C++这个核心问题,希望本文给大家带来相关帮助。

下面对C++中访问控制技术说明与介绍,C++中访问控制分为两大类,***种为:private,public,protected的访问范围,第二种为:继承后方法属性变化,欢迎大家学习参考。。。

***:private,public,protected的访问范围:
 
private: 只能由该类中的函数、其友元函数访问,不能被任何其他类及其子类的函数访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数。

第二:类的继承后方法属性变化:

使用private继承,父类的所有方法在子类中变为private; 使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变; 使用public继承,父类中的方法属性不发生改变; #t#

平访问:声明了某类的一个对象,访问其成员函数和数据成员;一般只有public区(不含protected区!)的成员函数和数据成员,可以被水平访问。 垂直访问:一个类从某个基类派生,派生类访问基类的成员函数和数据成员;一般只有public和protected区的成员函数和数据成员,可以被垂直访问。

再次提到:可以提供访问行为的主语为“函数”。类体内的访问没有访问限制一说,即private函数可以访问public/protected/private成员函数或数据成员,同理,protected函数,public函数也可以任意访问该类体中定义的成员public继承下,基类中的public和protected成员继承为该子类的public和protected成员(成员函数或数据成员),然后访问仍然按类内的无限制访问。

对于类域范围内,成员函数访问无所谓访问限制。对于继承情况下的基类private成员,在派生类中仍然继承了下来,只不过它不能直接访问,即使在类里也不行,更不用说是类对象了。

其实,对于这个问题,Bjarne已经宣传了十年。早在99年的时候Bjarne就写了“Learning C++ as A New Language”,并在好几篇技术访谈(这里,这里,这里,还有这里)里面提到如何正确对待和使用C++中访问控制中支持的多种抽象机制的问题。Andrew Koenig也写了一本现代C++教程《Accelerated C++》(这本书后面还会提到)。然而这么多年来,C++社群的状况改善了吗?就我所知,就算有改善,也是很小的。

学习者还是盲目钻语言细节,只见树木不见森林;网上还是弥漫着各种各样的“技术”文章和不靠谱的“学习C++的XX个建议”;一些业界的有身份的专家还是在一本接一本的出语言孔乙己的书(写一些普通程序员八辈子用不着的技巧和碰不着的角落);

而业界真正使用C++的公司在面试的时候还总是问一些边边角角的细节问题,而不是考察编程的基本素养(不,掌握所有的语言细节也不能让你成为一个合格的程序员)。这个面试理念是错误的,估计其背后的推理应该是“如果这个家伙不知道这个细节,那么估计他对语言也熟悉不到哪儿去;

而如果他知道,那么虽然他可能并不是好的程序员,但我们还是能够就后一个问题进一步测试的”,这个理念的问题在于,对语言熟悉到一定程度(什么程度后面会具体建议)就已经可以很好的编程了(剩下的只需查查文档);

而很多公司在测试“对语言熟悉程度”的时候走得明显太远了(比如,问临时对象生命期和析构顺序当然是无可厚非的,但问如何避免一个类被拷贝或者如何避免其构建在堆上?);当然,有些语言知识是必须要提前掌握的,具体有哪些后面会提到,面试的时候并非不能问语言细节,关键是“问哪些”。

责任编辑:chenqingxiang 来源: 51CTO.com
相关推荐

2010-01-19 17:54:47

C++程序

2010-01-13 17:32:02

C++数据类型

2010-01-19 13:32:20

C++操作符

2010-01-13 10:09:24

C++标准库

2010-01-19 10:04:30

C++类

2010-01-13 16:08:31

C++语言

2010-01-26 10:42:26

C++函数

2010-01-19 13:43:59

C++函数

2010-01-28 11:08:09

C++变量

2010-01-28 13:27:12

C++类定义

2010-02-02 14:55:35

C++访问控制符

2010-08-04 09:52:49

ACL配置

2010-01-15 15:13:28

C++概述

2010-01-14 17:42:47

CC++

2009-12-22 16:23:26

ADO.NET访问

2010-01-08 16:06:33

C++中struct

2010-01-26 13:42:28

C++指针

2010-01-25 10:54:18

C++设计

2010-01-26 13:36:27

C++设计

2010-01-21 15:07:31

C++开发
点赞
收藏

51CTO技术栈公众号