详解详解C++中的对象指针与对象数组中的对象指针与对象数组
C++对象指针对象指针
指向对象的指针
在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象空间的起始地址就是对象的指针。可以定
义一个指针变量,用来存放对象的指针。
如果有一个类:
class Time
{
public :
int hour;
int minute;
int sec;
void get_time( );
};
void Time::get_time( )
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
在此基础上有以下语句:
Time *pt; //定义pt为指向Time类对象的指针变量
Time t1; //定义t1为Time类对象
pt=&t1; //将t1的起始地址赋给pt
这样,pt就是指向Time类对象的指针变量,它指向对象t1。
定义指向类对象的指针变量的一般形式为:
类名 *对象指针名;
可以通过对象指针访问对象和对象的成员。如:
*pt //pt所指向的对象,即t1
(*pt).hour //pt所指向的对象中的hour成员,即t1.hour
pt->hour //pt所指向的对象中的hour成员,即t1.hour
(*pt).get_time ( ) //调用pt所指向的对象中的get_time函数,即t1.get_time
pt->get_time ( ) //调用pt所指向的对象中的get_time函数,即t1.get_time
上面第2, 3行的作用是等价的,第4, 5两行也是等价的。
指向对象成员的指针
对象有地址,存放对象初始地址的指针变量就是指向对象的指针变量。对象中的成员也有地址,存放对象成员地址的指针变量
就是指向对象成员的指针变量。
1) 指向对象数据成员的指针
定义指向对象数据成员的指针变量的方法和定义指向普通变量的指针变量方法相同。例如:
int *p1; //定义指向整型数据的指针变量
定义指向对象数据成员的指针变量的一般形式为:
数据类型名 *指针变量名;
如果Time类的数据成员hour为公用的整型数据,则可以在类外通过指向对象数据成员的指针变量访问对象数据成员hour:
p1=&t1.hour; //将对象t1的数据成员hour的地址赋给p1,p1指向t1.hour
cout<<*p1<<endl; //输出t1.hour的值
2) 指向对象成员函数的指针
需要提醒读者注意: 定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法有所不同。这里重温一个
指向普通函数的指针变量的定义方法:
数据类型名 (*指针变量名) (参数表列);
如