ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(ClassA* pa,ClassB* pb)
{
pa = new ClassA;
pb = new ClassB;
}
会是怎样的PA值,PB执行功能作为指针传递的函数内部赋值?
编辑 如何通过为指针后返回,如果PA,PB为NULL
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(ClassA* pa,ClassB* pb)
{
pa = new ClassA;
pb = new ClassB;
}
会是怎样的PA值,PB执行功能作为指针传递的函数内部赋值?
编辑 如何通过为指针后返回,如果PA,PB为NULL
正如在其他答案中指出的那样 - 在调用后两者仍然为NULL。不过,也有这个问题,有两种可能的解决方案:
1)引用
void assignObject(ClassA*& pa, ClassB*& pb)
{
pa = new ClassA;
pb = new ClassB;
}
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(pa, pb); // both will be assigned as expected.
2)指针
void assignObject(ClassA** pa, ClassB** pb)
{
assert(pa != NULL); assert(pb != NULL);
*pa = new ClassA;
*pb = new ClassB;
}
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(&pa, &pb); // both will be assigned as expected.
大多数程序员可能会选择引用,因为那时他们不” t需要断言任何东西(引用永远不能为NULL)。
NULL,因为你传递按价值指针。
ClassA* pa = NULL;
ClassA* pb = NULL;
void assignObject(ClassA* &pa,ClassB* &pb)
{
pa = new ClassA;
pb = new ClassB;
}
或者:
ClassA* pa = NULL;
ClassA* pb = NULL;
void assignObject(ClassA** pa,ClassB** pb)
{
*pa = new ClassA;
*pb = new ClassB;
}
他们将是空的,因为你是按值传递它们。如果你想通过引用传递,你可以这样做:
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(ClassA*& pa, ClassB*& pb)
{
pa = new ClassA;
pb = new ClassB;
}
注意,我不知道你想用全局变量来完成的任务。在这个例子中它们从来没有用过,因为局部变量(函数参数)隐藏了它们。
我想你还需要为你的函数声明一个返回值类型,以使它成为有效的C++。
如何通过指针 – yesraaj 2009-01-06 11:24:09
也许你应该改变这个问题......? – Roddy 2009-01-06 11:31:37