对象指针
对象与一般变量一样,只不过对象的类型是程序员自己定义的,而变量的类型是C++给出的。当然可以用指针指向对象咯,叫做对象指针。对象指针常用作函数参数,这跟普通指针用于函数参数的目的是一样的,可以改变参数的值。
对象引用老师刚刚说过,对象与一般变量一样,所以也可以给对象起一个别名,叫做对象引用。对象引用也常作为函数参数,跟对象指针作用一样,可以改变参数的值,但其机理不一样。这个我们之前学习过,所以不再赘述。
this指针在类的每个成员函数中都隐藏了一个特殊的指针:this指针。当一个对象调用其成员函数是,系统先将该对象的地址赋值给this指针。也就是说在成员函数中,可以通过this指针获取到对象的地址。
#include <iostream>
using namespace std;
class L
{
public:
L(int x){a=x;}
void incr(int y){a+=y;}
void Print(){cout<<"a= "<<a<<endl;}
private:
int a;
};
void func(L *a1,L &a2)
{
a1->incr(4);
a2.incr(4);
}
void main()
{
L l1(1),l2(2);
func(&l1,l2);
l1.Print();
l2.Print();
}
第12到16行定义函数func,有两个参数分别是对象指针和对象引用,函数的功能是将两个对象的数据成员a的值分别加4。输出结果为:
a= 5
a= 6
在右侧代码框中编写程序:根据上述例子,写一个类A,只有数据成员a。再写一个函数func,参数为两个指向类A对象的指针,比较两个对象的a值,返回指向a值最大的对象的指针。