#include<string>
#include<iostream>
using namespace std;
class CMyException
{
//异常类,该类的对象作为抛出异常时传递的异常参数。
public:
CMyException (string n="none") : name(n)
{
//构造函数,根据参数n构造一个名字为n的异常类对象
cout<<"构造一个CMyException对象,名称为:"<<name<<endl;
}
CMyException (const CMyException& e)
{
//拷贝构造函数,根据参数e拷贝构造一个异常类对象
name = e.name;
cout<<"拷贝一个CMyException对象,名称为:"<<name<< endl;
} virtual ~ CMyException ()
{
cout << "销毁一个CMyException对象,名称为:" <<name<< endl;
}
string GetName() {return name;}
protected:
string name; //异常类对象的名字
};
void main()
{
try{
// 构造一个异常对象,即会调用一次CMyException类
//的构造函数。这是个局部变量。
CMyException obj1("obj1");
//下面抛出异常对象。注意:这时VC编译器会复制
//一份新的异常对象,即调用一次CMyException
//类的拷贝构造函数。新拷贝的对象是个临时变量。 1
throw obj1;
}
catch(CMyException e)
{
//当异常参数传递给e时,由于是传值方式,因 2
//此会调用一次拷贝构造函数
cout<<"捕获一个CMyException类型异常,名称为:"<<e.GetName()<<endl;
}
cout<<"程序运行结束!"<< endl;
#include<iostream>
using namespace std;
class CMyException
{
//异常类,该类的对象作为抛出异常时传递的异常参数。
public:
CMyException (string n="none") : name(n)
{
//构造函数,根据参数n构造一个名字为n的异常类对象
cout<<"构造一个CMyException对象,名称为:"<<name<<endl;
}
CMyException (const CMyException& e)
{
//拷贝构造函数,根据参数e拷贝构造一个异常类对象
name = e.name;
cout<<"拷贝一个CMyException对象,名称为:"<<name<< endl;
} virtual ~ CMyException ()
{
cout << "销毁一个CMyException对象,名称为:" <<name<< endl;
}
string GetName() {return name;}
protected:
string name; //异常类对象的名字
};
void main()
{
try{
// 构造一个异常对象,即会调用一次CMyException类
//的构造函数。这是个局部变量。
CMyException obj1("obj1");
//下面抛出异常对象。注意:这时VC编译器会复制
//一份新的异常对象,即调用一次CMyException
//类的拷贝构造函数。新拷贝的对象是个临时变量。 1
throw obj1;
}
catch(CMyException e)
{
//当异常参数传递给e时,由于是传值方式,因 2
//此会调用一次拷贝构造函数
cout<<"捕获一个CMyException类型异常,名称为:"<<e.GetName()<<endl;
}
cout<<"程序运行结束!"<< endl;
}