静态成员:
//静态成员
#include
using namespace std;
class m_class1{
private:
static int a,b;
int d;
public:
static int c;
void fun(){//普通函数可以存取静态成员变量
a=100;
}
static void fun2(){
a=11;//静态函数只能存取静态成员变量
}
};
int m_class1::a=1,m_class1::b=2, \
m_class1::c=3;//初始化时不加static,以免与一般静态变量混淆
int main( )
{
m_class1 ob1;
m_class1::c=123321;
cout<
友元函数与友元类:
//友元函数与友元类
#include
using namespace std;
class m_class2;//类的声明
class m_class1{
private:
int a;
public:
friend void fun1();//声明友元函数
friend class m_class2;//声明友元类
};
class m_class2{
public:
void fun1(m_class1 &A){
A.a=123;
}
};
int main( )
{
fun1();
m_class1 ob1;
m_class2 ob2;
ob2.fun1(ob1);
return 0;
}
void fun1(){//友元函数不是类的成员函数
m_class1 oba;
oba.a=1;//这里可以访问私有成员,权限如同类的成员函数
}
/*类具有封装性,但有时封装的太厉害,使编程不够灵活,所以出现了友元这样的机制。
若B类声明了友元类A,则A类的所有成员函数都是B类的友元函数。
友元关系是单向的*/
常对象 与常成员
//常对象 与常成员
#include
using namespace std;
class m_class{
const int a;
int const b;
static int c;
int static d;
int e;
public:
m_class();
void fun(){
cout<
只有类的常成员函数才能访问该类的常对象,但也只能读不能改。
常对象只能调用常成员函数。