一直对C++中的try catch结构非常的疑惑。
编写了如下代码来查看被throw的对象,怎样被catch到的。
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cstdlib>
#include <new>
#include <iostream>
#include <string>
using namespace std;
class object
{
static int i;
int locali;
public:
~object()
{
cout<<"~object()"<<locali<<endl;
}
object():locali(0)
{
i++;
locali=i;
cout<<"object(): "<<locali<<endl;
}
friend ostream& operator<<(ostream& io,object obj)
{
return io<<"object: "<<obj.locali;
}
protected:
private:
};
int object::i=0;
int f()
{
throw object();
cout<<"throwed"<<endl;
return 1;
}
int main() {
try{
f();
cout<<"end f()"<<endl;
}
catch(object& obj)
{
cout<<obj<<endl;
}
getchar();
}
<