8.9.2 指向对象的指针

    对象占据一定的内存空间,和普通变量一致,C++程序中采用如下形式声明指向对象的指针。


    类名*指针名[=初始化表达式];

    初始化表达式是可选的,既可以通过取地址(&对象名)给指针初始化,也可以通过申请动态内存给指针初始化,或者干脆不初始化(比如设置为NULL),在程序中再对该指针赋值。

    提示 指针中存储的是对象所占内存空间的首地址。

    定义point类如下所示。


    class point { int x; int y; public: point(int xp=0,int yp=0) { x=xp; y=yp; } void print() { cout<<"x:"<<x<<",y:"<<y<<endl; } };以上述定义的point类为例,下列形式都是合法的。 point pt;//默认参数构造 point*ptr=NULL;//空指针 point*ptr=&pt;//取某个对象地址 point*ptr=new point(1,2);//动态分配内存 point*ptr=new point[5];//动态分配一块对象数组空间使用对象指针引用对象成员要使用成员访问符号“->”,这和第5章中struct的相关内容很相近,对于point类,可使用如下形式引用print函数。 point pt(1,2); point*ptr=&pt; ptr->print();

    注意

    如果数据成员x和y的访问权限是public,通过ptr->x、ptr->y的形式访问数据成员也是合法的。

    指向对象的指针满足所有第4章中介绍的指针运算规则。