有必要重载->吗????
fxbb 2006-06-30 11:54:37 各位大侠:通常定义一个类之后,我可以这样使用该类的指针:
class A
{
public:
A(int i=0):a(i) {}
void display() { cout<<a<<endl;}
private:
int a;
};
int main(int argc, char* argv[])
{
A a,*p;
p=&a;
p->display();
return 0;
}
但是,我也可以在定义一个类APtr,它是A的指针类,那么:
#include <iostream.h>
class A
{
public:
A(int i):a(i) {}
void display() { cout<<a<<endl;}
private:
int a;
};
class Aptr
{
public:
Aptr(A& aa):ptr(&aa) {}
A& operator*() {cout<<"hhh"<<endl;return *ptr;}
A* operator->() {cout<<"hhh"<<endl;return ptr;}
private:
A *ptr;
};
void main()
{
A m(4);
Aptr p(m);
p->display();
(*p).display();
}
我的问题是:既然我可以直接用C++预定义的指针A* p,何必在定义一个类APtr,并且重载->呢???这不是很麻烦吗?或许有别的我不知道的好处?智能指针又是什么?和我问的这个东东有关吗??请各位大侠一定讲明重载->的好处,谢谢!!!