Chinaunix

标题: 指针的引用VS引用的指针 [打印本页]

作者: freebarque    时间: 2009-07-11 11:18
标题: 指针的引用VS引用的指针
一直以为这俩没啥区别

今天试了一下, 发现还有一个编译不过, 你知道是哪个吗?

void fun1(int &*p)
{
      p = new int;
}


void fun2(int *&p)
{
      p = new int;
}



有啥名堂,有啥区别不?

[ 本帖最后由 freebarque 于 2009-7-11 16:45 编辑 ]
作者: fireman119    时间: 2009-07-11 11:30
我猜是前面的那个,呵呵,看起来像右值。
作者: freebarque    时间: 2009-07-11 11:43
前面一个确实编译不过,
事实上我先前还一直以为fun1合法,
比如这样:
int *p=NULL;
fun1(p);

把这个指针的引用传进去。


最近听说, gcc 4.4放行了2级引用, 类似这样: func(int &&p)

不知道是不是意味着fun1也将合法。
作者: aaaaa5aa    时间: 2009-07-11 12:21
标题: 回复 #1 freebarque 的帖子
有区别么?
作者: fireman119    时间: 2009-07-11 12:53
刚才试了下,vc里面似乎把它作为了取地址,而不是引用,看来是把它做了右值。
作者: openspace    时间: 2009-07-11 16:44
记得C++ Primer里好像讲过没有指向引用的指针
作者: OwnWaterloo    时间: 2009-07-11 22:30
标题: 回复 #1 freebarque 的帖子
我觉得吧……  至少在C++03或98中, 有指针的引用,但是不可能出现引用的指针这种类型的。
作者: emacsnw    时间: 2009-07-12 02:19
原帖由 freebarque 于 2009-7-10 19:43 发表
前面一个确实编译不过,
事实上我先前还一直以为fun1合法,
比如这样:
int *p=NULL;
fun1(p);

把这个指针的引用传进去。


最近听说, gcc 4.4放行了2级引用, 类似这样: func(int &&p)

不知道是 ...


这不是什么2级引用,这是C++未来的标准C++0x里面的右值引用。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2