对象指针
指针可以用来指向变量,也可以用来指向对象。
1.指向对象的指针
在建立对象时,系统会为每一个对象分配一定的存储空间,存放其中的数据成员。对象空间的起始地址就是对象的指针。
形式:
类名 * 对象名
Time * pt; //定义pt为指向Time类对象的指针变量
Time t1;
pt=&t1;
*pt pt所指向的对象,即t1;
pt->hour pt所指向的对象中的hour成员,t1.hour
(*pt).hour
(*pt).get_time()
2.指向对象成员的指针
例子:
int * p1;
p1=&t1.hour;将对象t1的数据成员hour的地址赋给p1,p1指向t1.hour.
形式:
数据类型名 * 指针变量名
3.指向对象成员函数的指针
定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法有所不同。
普通函数
数据类型名 (*指针变量名) (参数表列);
Void (* p) ( ); //p是指向void型函数的指针变量.
p=fun; //将fun函数的入口地址赋给指针变量p,p就指向了函数fun.
(* p)( ); //将用fun函数.
指向对象成员函数的指针
形式: 数据类型名 (类名::* 指针变量名) (参数表列);
然后把公用成员函数的地址赋给指针变量.
指针变量名=& 类名::成员函数名;
例子:
Void (Time ::* p2) ( );
p2=&Time::get_time;
有关指针对象的使用方法
# include<iostream>
using namespace std;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),sec(s){}
int hour;
int minute;
int sec;
void display();
};
void Time::display()
{
cout <<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
Time t1(10,13,56);
int * p1=&t1.hour;
cout <<*p1<<endl;
t1.display();
Time * p2=&t1;
p2->display();
void (Time::*p3) ();
p3=&Time::display;
(t1.*p3) ( );
}
对象数组
在日常生活中,有许多实体的属性是共同的,只是属性的具体内容不同.例如一个班有50个学生,每个学生的属性包括姓名,性别,年龄,成绩等.如果为每一个学生建立一个对象,需要取50个对象名.用程序处理不方便.这时可以定义一个”学生类”的对象数组,每一个数组元素是一个”学生类”对象.
例如:
Student stud[50];
对象数组初始化:
Student stud[50]={
Student(1001,18,87),
Student(1001,18,87),
Student(1001,18,87),
Student(1001,18,87),
Student(1001,18,87),
…………………….
};
本篇文章来源于《点睛考试网》[www.kswchina.com] ;原文链接地址:http://it.kswchina.com/ncre/ej/cc/fd/637797.html