我是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;
}
一切都很好。
这只是一个编译技巧,还是这种行为更复杂的原因?
答案 0 :(得分:10)
pint& a
相当于int*& a
,而不是int&* a
。你不能在C ++中有一个指向引用的类型,但你可以有一个引用指针类型。
答案 1 :(得分:2)
这是引用和指针的顺序。在你的第一个例子中,它是
int &*a
哪个是指向不允许的引用的指针。在第二个中它是
int *&a
这是对允许的指针的引用。