C++:对象指针
对象指针
概念:每一个对象在初始化后都会在内存中占有一定的空间。因此,既可以通过对象名访问,
也可以通过一个对象地址来访问一个对象。对象指针就是用于存放对象地址的变量。
声明对象指针的一般语法格式为:类名*对象指针名
指针访问模式:1、用指针访问单个对象成员
2、用对象指针访问对象数组
//@用指针访问单个对象成员:一般情况下,用点运算符"."来访问对象成员,当用指向对象
//的指针来访问对象成员时,就要用"->"操作符。
//例3.17 对象指针的使用
#include<iostream>
using namespace std;
class exe{
public:
void set_a(int a) //定义成员函数set_a,给数据成员赋值
{
x = a;
}
void show_a() //定义成员函数show_a,输出数据成员的值
{
cout<<x<<endl;
}
private:
int x;
};
int main()
{
exe ob; //定义类exe的对象ob
exe *p; //定义类exe的对象指针变量p
ob.set_a(2); //调用成员函数set_a,给数据成员赋值
ob.show_a(); //调用成员函数show_a,显示数据成员的值
p = &ob; //将对象ob的地址赋给指针变量p
(*p).show_a(); //调用p所指向的对象的成员函数show_a,也即ob.show_a()
p->show_a(); //调用p所指向的对象的成员函数show_a,也即ob.show_a()
return 0;
}
//以上情况下:ob.show_a() = (*p).show_a() = p->show_a() ,运行结果相同
//@用对象指针访问对象数组:
exe *p; //定义指向类exe的对象指针变量p
exe ob[2]; // 定义类exe的对象数组ob[2]
若只有数组名,没有下标,这时该数组名代表第一个元素的地址,所以执行语句:
p = ob; //就是把数组中的第一个元素的地址(即数组的地址)赋给对象指针变量p
将3.17的主函数改成为:
int main()
{
exe ob[2];
exe *p;
ob[0].set_a(10);
ob[1].set_a(20);
p = ob;
p->show_a();
p++;
return 0;
}
程序运行结果: 10
20
程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!