2016-12-24 123 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; 
} 

上面是智能指针的代码。但我没有得到什么东西。C++中的智能指针

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

我不明白上面。

回答

1
int & 

该函数的返回值是参照int

operator *() 

覆盖一元*(解引用)运算符。

{ return *ptr; } 

返回指出的内容。

+0

得到它,'int&'是返回值。 –