2016-12-24 4 views
-1
#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; 
} 

Oben ist Code für Smart Pointer. aber ich bekomme nicht wenige Dinge.Smart Pointer in C++

1. int &operator *() { return *ptr; }

ich oben nicht verstehen.

Antwort

1
int & 

Rückgabewert dieser Funktion wird auf int

operator *() 

Aufschalten unären * (dereferenzieren) -Operator.

{ return *ptr; } 

Zurück, was gesagt wird.

+0

habe es, 'int &' ist Rückgabewert. –