C++ 代码:
person* NewPerson(void)
{
person p;
/* ... */
return &p; //return pointer to person.
}
C#代码:
person NewPerson()
{
return new person(); //return reference to person.
}
如果我理解这一点,C++ 中的示例是不正确的,因为p
将超出范围,函数将返回一个野指针(悬空指针)。
C# 中的示例是可以的,因为只要有对它的引用,匿名新人就会留在范围内。(调用函数得到一个。)
我做对了吗?