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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值