#include<iostream>
using namespace std;
class SmartPointer
{
    private:
        int *ptr;
    public:
        SmartPointer(int *p);
        //int operator &();
        //int operator *();
        int &operator *() {  return *ptr; }
        ~SmartPointer();
};
SmartPointer::SmartPointer(int *p = NULL)
{
    cout<<"Initilaize ABC"<<endl;
    ptr = p;
}
SmartPointer::~SmartPointer()
{
    cout<<"De-Initilaize ABC"<<endl;
    delete ptr;
}
/*
int SmartPointer:: operator &()
{  
    return *ptr; 
}
int SmartPointer:: operator *()
{  
    return *ptr; 
}
*/
int main()
{
    int iNumber = 10;
    //int *ptrToNumber;
    SmartPointer a(new int());
    *a = 10;
    cout<<"value in a:"<<*a<<endl;
    cout<<"Address of a:"<<&a<<endl;
    return 0;
} 
Above is code for smart Pointer. but I am not getting few things.
1.
     int &operator *() {  return *ptr; }
I not understand above.
 
    