类与对象(终章)——友元,内部类,匿名对象

1. 友元

之前实现日期类我们实现输入输出流重载的时候就已经了解了友元的概念,我们今天正式走进友元,详细地学习友元的各种特点与性质。

关键字:friend

1.2 友元函数

友元函数在重载operator<<与operator>>时已经进行过介绍与实际举例:因为我们要让变量流向cout/cin,因此在全局写函数,让该函数成为日期类的友元函数,该函数就能直接访问类的私有成员,在类的内部声明,声明时需要加friend关键字,此处不再详细赘述,直接给出友元函数的特点:
1.友元函数可以访问类的私有和保护成员,但不是类的成员函数;
2.友元函数不能用const修饰;
3.友元函数可以在类定义的任何地方声明,不受类访问限定符的限制;
4.一个函数可以是多个类的友元函数,
5.友元函数的调用与普通函数的调用原理相同。

1.3 友元类

友元类也很好理解:
在这里插入图片描述
友元类的特性:
1.友元关系是单向的;
2.友元关系不具有传递性(即A是B的友元,B是C的友元,不代表A是C的友元);

2. 内部类

如果一个类定义在另一个类的内部,这个内部定义的类就叫做内部类:
在这里插入图片描述
内部类不属于外部类,它是一个独立的类,只是他的访问受外部类的类域与访问限定符的限定,同时,内部类天生是外部类的友元函数,内部类能访问到外部类的成员变量。
下面的实验形象的证明了外部类并不包含内部类,他们是独立的个体。
在这里插入图片描述
内部类的特性:
1.内部类可以定义在外部类的public、protected、private。
2.内部类可以直接访问外部类的static成员,不需要外部类的对象/类名。
3.内部类在外部的访问受外部类的限定;
4.内部类是独立的一个类,其成员不属于外部类;

3.匿名对象

定义一个对象时,不给对象命名:在这里插入图片描述
匿名对象的生命周期只在它所在这一行(即遇到分号;它的生命周期就结束了)在这里插入图片描述
最后一点内容就是编译器对于传参与传返回值时会进行一些优化,提高程序运行效率,介于每种编译器的优化效果不同,这一部分同学们可以下去自己尝试看看自己的编译器怎么优化的?
至此,类与对象的内容全部结束,类与对象是学习C++的一道门槛,大家一定要好好重视这部分内容,我们下期再见!!!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值