静态生存期:
当对象用关键字 static 声明时,对象具有静态生存期,生存期为程序的整个生命周期。
静态成员函数只能引用属于该类的静态数据成员或静态成员函数。
友元:友元函数和友元类
C++提供的一个破坏数据封装和数据隐藏的机制。
通过将一个模块声明为另一个模块的友元,一个模块能引用另一个模块被隐藏的信息;
为了确保数据完整性,建议不使用或者少使用友元。
友元函数:
在类声明中,使用friend修饰说明的非成员函数,在它的函数中,可以访问对象的private和protected成员;
可以增加灵活性;
访问对象中的成员必须通过对象名;
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 数组名【大小】;