说我有以下成员函数:
void CFoo::regWrite( int addr, int data )
{
reg_write( addr, data ); // driver call to e.g. write a firmware register
}
Run Code Online (Sandbox Code Playgroud)
显然,调用此函数不会修改调用它的对象的内部状态.但是,它会更改此Foo实例所代表的任何状态.
在这些情况下,应该Foo::regWrite(int addr, int data)是const函数吗?
一般的建议是你不应该捕获java.lang.Error,除非在特殊情况下,请参阅捕获Throwable是不好的做法?例如.
我的情况是我有一个程序有时耗尽内存并抛出java.lang.OutOfMemoryError.虽然没有从中恢复但我确实想知道它发生了,所以我希望在日志中看到一些东西和非零退出代码.那么这样的建议是什么?
public static void main(String[] args)
{
try
{
...
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
catch (OutOfMemoryError e)
{
e.printStackTrace();
System.exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
另一个程序是类似的,除了它可能是消耗所有内存的一个特定线程.在这种情况下,如果该线程退出,则可以继续处理,我真正想要的只是查看日志并最终具有非零退出代码.那么我应该在那个线程运行方法中捕获OutOfMemoryError吗?
我在C中理解,运算符^用于逐位EX-OR.在其中一个C++代码中,我看到了以下使用此运算符的行:
using namespace System::Threading;
public ref class Expert : public System::Windows::Forms::Form
{
int i ;
float a ;
public:
int count;
Thread^ th;
}
Run Code Online (Sandbox Code Playgroud)
^这里是什么意思?