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="<};

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.*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本身不会被清除。

你可能感兴趣的:(c++,内存管理)