0

私は C++ の初心者で、以下の例の違いを理解したいと思っています。

関数を作成できません

void someFunc(int &*a){
    int *b=new int; //just for example
    a=b;
}

しかし、typedefを使用して

typedef int* pint;

void someFunc(pint &a){
    int *b=new int; //just for example
    a=b;
}

すべてが正常である。

それは単なるコンパイラのトリックですか、それともそのような動作の理由はより複雑ですか?

4

2 に答える 2

10

pint& aと同等でint*& aあり、ではありませんint&* a。C ++では、参照へのポインター型を使用することはできませんが、ポインターへの参照型を使用することはできます。

于 2012-04-28T11:55:08.647 に答える
2

これは、参照とポインターの順序です。あなたの最初の例ではそれは

int &*a

これは、許可されていない参照へのポインタです。2番目のものでは

int *&a

これは、許可されているポインターへの参照です。

于 2012-04-28T11:56:35.603 に答える