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

这是一个指向不允许的引用的指针。在第二个是

int *&a

这是对允许的指针的引用。

于 2012-04-28T11:56:35.603 回答