#include <iostream>
using namespace std;
class base
{
private:
int m;
public:
base() {};
base(int m){this->m=m;}
int get(){return m;}
void set(int m){this->m=m;}
};//base_end
int main()
{
base *ptr;
ptr=new base[2];
ptr->set(30);
ptr=ptr+1;
ptr->set(50);
base a[2]= {1,9};
cout<<a[0].get()<<","<<a[1].get()<<endl;
cout<<ptr->get()<<",";
ptr=ptr-1;
cout<<ptr->get()<<endl;
delete[] ptr;
return 0;
}
运行结果:
学习心得:这个程序很好理解,this指针指向形参并复制,main函数里ptr指针指向一个新开辟的数组。接下来调用ptr所指向对象的成员函数。改变了数组的值。第一次没有改变值,因此还是照原来的输出,第二次输出调用了ptr所指向对象的成员函数,并且之前ptr+1,所以是从a[1]开始,然后减一,输出a[0]。