这里是一些C++代码:
#include <iostream>
class A
{
int x;
int y;
double v;
public:
A(int x, int y)
:x(x),y(y)
{
std::cerr << "A("<<x<<","<<y<<")\n";
}
~A()
{
std::cerr << "~A()\n";
}
operator double* ()
{
v=1.5*x+y;
return &v;
}
};
void f(double* val)
{
std::cerr << "f("<<*val<<")\n";
*val=0.3;
}
int main()
{
f(A(3,5));
}
我得到以下输出:
也就是说,我希望它这样工作。但我不确定在A(3,5)
f(9.5)
~A()
f
返回后是否必须调用 A
的析构函数。这有保证吗?operator double* ()
返回的指针是否可能在调用 f
时变为无效?