era*_*zap 15 c++ pointers reference
我试图想出一个具体的推理,为什么要在引用上使用指针作为函数的返回类型,
我的理由是,如果无意中将null值返回给引用类型,则无法检查它,并可能导致运行时错误
int& something(int j)
{
int* p = 0 ;
return *p;
}
void main()
{
int& i = something(5);
i = 7; // run-time error
}
Run Code Online (Sandbox Code Playgroud)
如果我使用了指针,我可以检查它并避免错误,指针返回值将作为合同,必须返回一个值.
void main()
{
int* i = something(5);
if( i != null )
*i = 7;
}
Run Code Online (Sandbox Code Playgroud)
任何想法将再次受到赞赏,
你会用什么以及为什么引用或指针
提前致谢.
And*_*mas 22
如果出现以下情况,您可以使用指针而不是引用:
无论如何,您不希望返回指针或对局部变量的引用.
Car*_*arl 13
参考是一种不同的思维方式.将引用视为"指向现有对象的指针".一旦你这样做,你就会明白为什么它们不能为NULL - 对象存在并且引用指向它.
因此,如果您的函数返回对它创建的内容的引用,则需要保证它实际上确实创建了一个有效的对象.如果它没有,或者不能,那么这就是抛出异常的理由.
与指针对比.指针可以为NULL,调用者必须处理NULL返回值.因此,如果您的函数无法保证它将返回有效的引用并且您不想抛出异常,则需要使用指针.