类的常成员、静态成员和友元学习笔记

来源:互联网 发布:cd设计软件 编辑:程序博客网 时间:2024/06/12 03:25

1.      常成员

Class A

{

           ……………..

           int k;            

           const intM;                //常数据成员    

           intg()const;               //常成员函数

           A();

};

const A t;            //常对象


(1)      常数据成员

必须通过初始化列表对该数据成员进行初始化,例如A::A():M(100) {}

 

(2)      常对象

该对象的全部数据成员为只读

例如:t..k原本为1,执行t.k=3则会出错

            

(3)      常成员函数

该成员函数的this指针被约束为指向常量的常指针

例如:int A::g()const

             {

                       return k++;    //报错,不能修改数据成员

     }

 常成员函数的this指针类似于:  const A * const this;

 

2.      静态成员

Class B

{

           ………………..

           static intnum;      //静态成员函数

           static voidfun();       //静态成员函数

           ……………..

};

B bb;

“静态”是值他的作用域局部于类,一个类可以创建多个对象,因此静态成员提供了一种同类对象的共享机制。

(1)      静态数据成员

勒种声明,类外定义

例如:int B::num=0;

 

 

(2)      静态成员函数

没有this指针,因此只能访问类的静态数据成员

普通成员函数由对象激活,而静态成员函数由类或者对象激活

例如:    B::fun();

       或者 bb.fun();

 

3.      友元

友元可以访问类的所有成员,包括私有成员,可以是一个普通函数、成员函数或者另一个类

(1)      友元函数

class C

{

    private:

             int I;

             void fun(int);

             friendvoid fun2(C *,int);

    ……………………………..

};

void fun2(C * ptr,int x)

{            ptr->i=x;            }  //友元函数通过参数访问类的私有成员

void C::fun(int x)

{            i=x;                     }  //成员函数通过this指针访问类的私有成员

 

(2)      友元类

Class D

{

    friend class E;

    private:

             int x;

};

 

Class E

{

    public:

 void set(int i)

 {       

Dobj.x=i; //E不是D的友元类,Dobj将不能在这里访问私有成员x

   }

private:

         D Dobj;

}

0 0
原创粉丝点击