友元函数与友元类,外加一点常类型与静态生存期

本文详细介绍了C++中的静态生存期,包括静态成员函数的特性。同时,探讨了友元的概念,解释了友元函数和友元类如何打破封装并提供对私有成员的访问。此外,还讨论了常量在C++中的应用,包括常量对象、常引用和常数组的使用和限制。

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

静态生存期:
当对象用关键字 static 声明时,对象具有静态生存期,生存期为程序的整个生命周期。

静态成员函数只能引用属于该类的静态数据成员或静态成员函数。



友元:友元函数和友元类
C++提供的一个破坏数据封装和数据隐藏的机制。
通过将一个模块声明为另一个模块的友元,一个模块能引用另一个模块被隐藏的信息;
为了确保数据完整性,建议不使用或者少使用友元。

友元函数:
在类声明中,使用friend修饰说明的非成员函数,在它的函数中,可以访问对象的privateprotected成员;
可以增加灵活性;
访问对象中的成员必须通过对象名;
 class Point
 {
 public:
 	Point (int xx=0,int yy=0)
 	{
 		X=xx;
 		Y=yy;
 	}
 	friend float Distance(Point &a,Point &b);
 private:
 	int X;
 	intY;
 };
 double Distance(Point& a,Point& b)
 {
 	.....
 }
Distance不是成员函数,但是如果在类中声明,那么他就可以访问类的被保护成员。
尽管类定义中有友元函数原型,友元函数仍然不是成员函数
由于友元函数不是任何类的成员函数,所以不能用句柄(对象)加点操作符来调用

友元类:
若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。
声明语法:
将友元类在另一个类中用friend修饰;
友元类举例:
class A
{
	friend calss B;
public:
	A();
	~A();
private:
	int x;
	
};
class B
{
public:
	B();
	~B();
	private:
		A a;
};
void B::Set (int i)
{
	a.x=i;
}

友元类是单向的,B是A的友元,B可以访问A,但A不能访问B;






常类型:
常类型的对象必须进行初始化,且不能被更新;
常引用:引用不能被更新
const 类型说明符 &引用名;
常对象:必须进行初始化,且不能被更新
类名 const 对象名 或者  const 类名 对象名

常数组:数组元素不能被更新
类型说明符 const 数组名【大小】;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值