Redian新闻
>
select2perform上面C++测试挺头疼的
avatar
select2perform上面C++测试挺头疼的# JobHunting - 待字闺中
w*s
1
很多stl的问题,主要是std::remove_if之类的
还有语法问题主要是考exception, 继承
举个例子,
class A
{
virtual void f() throw (int, double, long) = 0;
}
class B
{
int f();//1
int f() throw(int);//2
void f() throw(double, long, int);//3
void f();//4
void f() throw(long);//5
}
哪些是对的
avatar
c*r
2
类A,B没有继承关系吗?
avatar
w*s
3
有继承,忘记加了。
avatar
c*r
4
下面是我的答案,如果有错误,请指正:)
class A
{
virtual void f() throw (int, double, long) = 0;
}
class B :public A (假设)
{
int f();//1
int f() throw(int);//2
void f() throw(double, long, int);//3
void f();//4
void f() throw(long);//5
}
应该是1,2,4,5不对(如果1-5同时出现就都不对了),因为这几个函数都在一个类(
public 继承,因此也包含基类的void f() =0),是overloading,不能依靠return
type 和exception specification 来区别,所以compile time error
如果Class B里面只有3,那么是可以的,或者只有5也可以,只有4 不行,因为4可以抛
出任何异常,但是基类的函数只能抛出int, long, double,只有1或者2也不行。
avatar
S*I
5
2, 3 and 5 are correct

【在 w********s 的大作中提到】
: 很多stl的问题,主要是std::remove_if之类的
: 还有语法问题主要是考exception, 继承
: 举个例子,
: class A
: {
: virtual void f() throw (int, double, long) = 0;
: }
: class B
: {
: int f();//1

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。