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