由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个c++题(exception handling)
相关主题
select2perform上面C++测试挺头疼的问一道c++的题
问个C++ virtual function的问题amazon一面
a C question about global variableBloomberg C++ 软工面试题汇总
onsite归来,有一个c的问题不知道怎么回答(EE, CS请进)电话中写 code,不是给做弊的机会吗
bloomberg电面2,攒rp求bless (给据了 :()Virtual pointer是每个object都有一个吗?
C++ Q36: derivation specification (B8_9)recursive中该用reference 还是普通变量传递?
A家电面面经C/C++里数组作函数的参数的话应该怎么写?
Interview questions, Bloomberg求教三进程间同步的问题,原题是CC150第5版的16.5
相关话题的讨论汇总
话题: throw话题: virtual话题: func话题: void话题: compile
进入JobHunting版参与讨论
1 (共1页)
l********n
发帖数: 54
1
父类的函数(pure virtual)抛出一个异常,子类继承。有如下代码
class Foo
{
public:
void virtual func() throw (int, float) = 0;
};
class Bar : public Foo
{
public:
void virtual func() throw(short); // line 1: compile error "
// looser throw specifier"
void virtual func() throw(); // line 2: can compile
void virtual func() throw(float, int); // line 3: can compile
void virtual func() throw(float
s*****e
发帖数: 16824
2
throw的类型不对?

【在 l********n 的大作中提到】
: 父类的函数(pure virtual)抛出一个异常,子类继承。有如下代码
: class Foo
: {
: public:
: void virtual func() throw (int, float) = 0;
: };
: class Bar : public Foo
: {
: public:
: void virtual func() throw(short); // line 1: compile error "

l********n
发帖数: 54
3
应该是的,不过如何来解释line 2-5。这个是因为什么rule呢?
我本来的想法是只有下面的exact match才行。
class Bar : public Foo
{
void virtual func() throw (int, float);
}

【在 s*****e 的大作中提到】
: throw的类型不对?
s*****e
发帖数: 16824
4
后面的类型都没问题吧,就是第二个我不是很吃的准,不指定类型应该也是可以的,因
为反正有个catch可以接受。

【在 l********n 的大作中提到】
: 应该是的,不过如何来解释line 2-5。这个是因为什么rule呢?
: 我本来的想法是只有下面的exact match才行。
: class Bar : public Foo
: {
: void virtual func() throw (int, float);
: }

l********n
发帖数: 54
5
说的有道理。假设子类继承后,只throw符合父类类型的异常(可以0个到n-1个)如下面,因为有catch可以接受。
void virtual func() throw (float)
不过试了下面的,我又觉得糊涂了。
void virtual func() throw(int, int); // can compile
void virtual func() throw(int, int, int); // can compile

【在 s*****e 的大作中提到】
: 后面的类型都没问题吧,就是第二个我不是很吃的准,不指定类型应该也是可以的,因
: 为反正有个catch可以接受。

M********5
发帖数: 715
6
呵呵,我觉得这个rule是没有问题的
我的理解,只要throw的exception是父类exception的子集就行了,它并不提供类型转
换的(所以short当然不能算int),你上面举的例子,throw三个int的exception,那也
是int的exception,而不是short的exception,个数跟类别是两个不同的概念
这是我的理解
1 (共1页)
进入JobHunting版参与讨论
相关主题
求教三进程间同步的问题,原题是CC150第5版的16.5bloomberg电面2,攒rp求bless (给据了 :()
怎么在main()函数里面free我malloc()的空间C++ Q36: derivation specification (B8_9)
问一个低级的问题A家电面面经
IPSoft的面试题,和大家共享下Interview questions, Bloomberg
select2perform上面C++测试挺头疼的问一道c++的题
问个C++ virtual function的问题amazon一面
a C question about global variableBloomberg C++ 软工面试题汇总
onsite归来,有一个c的问题不知道怎么回答(EE, CS请进)电话中写 code,不是给做弊的机会吗
相关话题的讨论汇总
话题: throw话题: virtual话题: func话题: void话题: compile