我只是想澄清一些事情,假设我们有函数签名:
1)int* X(){}
2)int Y(){}
3)int& Z(){}
我正在尝试找出我可以为上述返回的值类型的详尽可能性。下面显示了上述函数体的可能实现:
1)
int* X(){
int* b = new int(6);
return b;
}
2)
int Y(){
int b = 6;
return b;
}
或者
int Y(){
int* b = new int(6);
return *b;
}
编辑:2)如果 b 没有被删除,则由于内存泄漏而不好。
3)
int& Z(){
int b = 6;
return b;
}
编辑:3)不好,因为一旦函数返回, b 就会超出范围。
有什么我错过的可以从上述 3 个函数签名中的任何一个返回的吗?变得更加冒险,怎么样:
int* X(){
int b = 6;
return reinterpret_cast<b>;
}
和
int X(){
int* b = new int(6);
return reinterpret_cast<b>;
}
? (我的理解reinterpret_cast
可能有误...)