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; 
} 

Выше кода для умного указателя. но я не получаю мало вещей.Smart Pointer in C++

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

Я не понимаю выше.

ответ

1
int & 

Возвращаемое значение этой функции является ссылка на int

operator *() 

Override одинарным * (разыменовывания) оператора.

{ return *ptr; } 

Верните то, что указано.

+0

получил его, 'int &' - возвращаемое значение. –