2011-12-14 152 views
6

在C++中,我們有以下幾點:聲明const指針爲int?

int* p1;    // pointer to int 
const int* p2;  // pointer to constant int 
int* const p3;  // constant pointer to int 
const int* const p4; // constant pointer to constant int 

和d:

int* p1;    // pointer to int 
const(int)* p2;  // pointer to constant int 
?? ?? ??    // constant pointer to int 
const(int*) p4;  // constant pointer to constant int 

什麼是對constant pointer to int語法?

回答

5

我想你可以模擬它:

struct Ptr(T) 
{ 
    T* _val; 

    this(T* nval) const 
    { 
     _val = nval; 
    } 

    @property T* opCall() const 
    { 
     return cast(T*)_val; 
    } 

    alias opCall this; 
} 

void main() 
{ 
    int x = 1; 
    int y = 2; 
    const Ptr!int ptrInt = &x; 
    assert(*ptrInt == 1); 

    *ptrInt = y; // ok 
    assert(*ptrInt == 2); 
    assert(x == 2); 

    ptrInt = &y; // won't compile, good. 
}