设为首页 加入收藏

TOP

C++基础教程:友元类与面向对象
2017-12-06 17:36:00 】 浏览:283
Tags:基础 教程 元类与 面向 对象

因为后续准备入职的公司都希望能转C++,所以最近也是按部就班的开始进行C++的学习。然后这个系列的文章打算探究C++的语言特性,也比较一下不同语言(如Java,Scala,Python,Go)之间的设计哲学,同时也抛砖引玉的希望能有大拿们的指点。最近在学习过程之中接触了友元函数与友元类的概念,第一篇文章我们就聊聊友元的概念。


开篇先简单介绍一下友元这个概念吧。
在C++之中,类的友元函数是定义在类外部,但它有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。


直接上个代码,我们看看友元函数与友元类具体是怎么样使用的:


上面的代码可以看出,友元函数和友元类都可以直接访问到对象的私有变量。接下来我们来分析一下友元函数的特点。


接下来我们聊聊怎么从面向对象的角度去理解友元关系。(以下内容皆为个人理解,有不准确之处望能斧正


显然,类C与A的友元关系止步于继承处,类C没法访问类B新定义的私有变量。(这里留一个小问题给大家,如果类B覆盖了类A的私有变量x,类C之中的printB是否仍然可以通过编译呢?)


我们再看一段不同的代码:


类C虽然继承了类B,但是也不在具有了和A的友元关系,只能"拼爹"。依赖从类B之中继承的友元函数来访问类A。(这里同样留一个小问题给大家,如果类B之中的fun函数是protected或private的,那上述代码还能够正常编译吗?)


??在这里做一个简单的小结:友元关系在友元类之中没有继承性,只能依赖基类的友元关系。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++基础教程:struct还是class? 下一篇Kotlin Native新增Objective-C互..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目