int& fun()
{
int * temp = NULL;
return *temp;
}
在上述方法中,我试图对空指针进行解引用。当我调用此函数时,它不会抛出异常。我发现当返回类型为引用时,如果返回类型为值,则不会抛出异常。即使将空指针的解引用分配给引用(如下行),它也不会抛出异常。int* temp = NULL:
int& temp1 = *temp;
我的问题是,对于引用,编译器是否不需要进行解引用操作?
int& fun()
{
int * temp = NULL;
return *temp;
}
在上述方法中,我试图对空指针进行解引用。当我调用此函数时,它不会抛出异常。我发现当返回类型为引用时,如果返回类型为值,则不会抛出异常。即使将空指针的解引用分配给引用(如下行),它也不会抛出异常。int* temp = NULL:
int& temp1 = *temp;
我的问题是,对于引用,编译器是否不需要进行解引用操作?
我不确定我理解你想做什么。对 ** NULL ** 指针的取消引用未定义。
如果您想表明您的方法并非总是返回值,您可以将其声明为:
bool fun(int &val);
或者使用STL方式(类似于std :: map insert):
std::pair<int, bool> fun();
或者使用boost库的方式:
boost::optional<int> fun();