c++ is on the way 2

本文详细介绍了对象之间的三种主要关系:has-a(包含)、is-a(继承)和has-access-to(可访问),并深入探讨了友元类的概念及其使用注意事项,同时讲解了引用的正确使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:对象之间有几种关系,分别是什么?

简单来讲,对象间的关系可以描述为:

has-a 关系:包含关系,A对象中包含B对象。这是在一个类中嵌入另一个类的实例实现的。

is -a 关系:继承关系,B对象是对A对象的继承。这是由继承技术实现的。

has-access-to 关系:可访问关系,即B可以访问A中的数据成员。这是由友元类和引用实现的。

问题:什么是友元类?

友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。

例如,以下语句说明类B是类A的友元类:
class A
{

public:
friend class B;

};
经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员。

使用友元类时注意:
(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性,不具有传递性。

问题:引用的使用需要注意一些什么?

引用在创建之时必须初始化,或在其声明中完成。对于成员引用,在构造方法的前导中完成初始化。或者在调用一个带有引用的方法时,在调用之时完成。

问题:右移位运算符的工作方式有什么不同

对于无符号数,1011>>1 == 0101,对于有符号类型,1011>>1 == 1101,因为无论怎么移位,是不会改变其符号的,对于任何一个数字来说,移位运算符,右移都是除以2,左移都是乘以2(假设不溢出)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值