读书人

二级指针 引用 修饰的自变量,该如何处

发布时间: 2012-03-29 12:53:12 作者: rapoo

二级指针 引用 修饰的自变量
众位大神,小白一枚

最近独到一段代码,其中有这样一段代码如下,没有太看懂。

其中 Base 是已经定义的基类,Derived1 是 Base 的子类,Derived2 是 Derived1的子类。

[code=C/C++][/code]

void Function(Base** &pt, int num, int &sz)
{
sz = sizeof(Derived2);
pt = new Base* [num];

for(int i = 0;i < num; i++)
{
pt[i] = new Derived2;
}


}

[code=C/C++][/code]

求大神解释下,自变量声明中 两级指针 以及 引用 的修饰说明了什么问题。
这样写的有什么好处。

感谢大家帮忙,感谢!!!

[解决办法]
Base **ptr;
需要在函数内改变ptr,则传ptr的地址或引用,于是参数为Base** &
[解决办法]
Base** &pt;这个表达式的意思是pt是一个指向指针的指针的引用,假设用 Base **P传递给pt,那么pt就是p的别名,对pt的操作就是对p的操作
[解决办法]
跟int a;int &b=a;一样,好比:Base **p;Base **&t=p;也就是说t是p的别名,不是三级指针,
像一个人有两个名字
[解决办法]
void Function(Base** &pt, int num, int &sz)
pt 为二级指针的引用,sz也为int类型的引用

例:Function(a,b,c)
引用类型是不占用额外空间的,在函数参数传递时,不使用临时对象,对pt的操作就是对a的操作
pt 为二级指针的引用,程序少生成一个指针变量

读书人网 >C++

热点推荐