预测以下C++程序的输出。
C++
#include
using namespace std;
int main()
{
try
{
throw 'x';
}
catch(int x)
{
cout << " Caught int " << x;
}
catch(...)
{
cout << "Default catch block";
}
}
C++
#include
using namespace std;
class MyExcept1 {};
class MyExcept2
{
public:
// Conversion constructor
MyExcept2 (const MyExcept1 &e )
{
cout << "Conversion constructor called";
}
};
int main()
{
try
{
MyExcept1 myexp1;
throw myexp1;
}
catch(MyExcept2 e2)
{
cout << "Caught MyExcept2 " << endl;
}
catch(...)
{
cout << " Default catch block " << endl;
}
return 0;
}
输出:
Default catch block
在上面的程序中,抛出了字符“ x”,并且有一个catch块来捕获一个int。可能有人认为可以通过考虑ASCII值“ x”来匹配int catch块。但是不会对catch块执行此类转换。考虑下面的程序作为另一个示例,其中不为引发的对象调用转换构造函数。
C++
#include
using namespace std;
class MyExcept1 {};
class MyExcept2
{
public:
// Conversion constructor
MyExcept2 (const MyExcept1 &e )
{
cout << "Conversion constructor called";
}
};
int main()
{
try
{
MyExcept1 myexp1;
throw myexp1;
}
catch(MyExcept2 e2)
{
cout << "Caught MyExcept2 " << endl;
}
catch(...)
{
cout << " Default catch block " << endl;
}
return 0;
}
输出:
Default catch block
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。