C++特有的运算符 .* 和 ->*使用

C++特有的运算符

  ::范围运算符,1.改变全局变量用的;2.指定在哪个namespace命名空间用的 ;3.class或者class的嵌套的成员用的

  .*  成员指针运算符1       1. 对象.*成员指针名       

  ->*成员指针运算符2    2.对象指针->*成员指针名 

举个例子:

   class A{

        public:

        int a;

        A():a(7){}

        void fun1(){cout <<"test1" << endl;}

       int  fun2(int a,int b){cout <<"a="<<a<<' b="<<b << endl;   return a+b;}

};

void main()

{

  int (A::*pm1) = & A::a;//成员指针pm1指向成员a

  void (A::*f)() = A::fun1;//成员指针f指向成员函数fun1,  此处必须将类名和指针名放到同一个()内,

int (A::*f2)(int ,int) = A::fun2;//成员 指针f2指向成员函数fun2

  A aa;

  cout<<aa.*pm1;

(aa.*f)();

 (aa.*f2)(3,5);

A *pa = new A();

pa->*pm1 = 100;

cout << pa->a << endl;//输出a的值为100

(pa->*f)();//  必须这样才能调用函数 

 

}

 new   申请一块空间

 delete  释放一块空间

  int  * a = new int (10);

假设  a的值为1008,&a 的值为 2009,*a的值为new出来的10

执行delete  a后,a的值还是1008,&a的值依然为2009,只是*a的值不再为10,可能为一个不确定的值。。。

delete后,只是把a指向 的那个内存空间释放回系统,使这个被释放的空间可以由程序继续使用,a本身不会被清除。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值