2016-12-24 10 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」は戻り値です。 –

関連する問題