m*****m 发帖数: 242 | 1 1.
template
bool is_int();
is_int must return true if T is int and false otherwise. How do you
implement is_int?
Choice 1
template
bool is_int()
{
return T is int;
}
Choice 2
template
bool is_int()
{
return false;
};
template
bool is_int()
{
return true;
};
Choice 3
template
bool is_int()
{
T a;
return dynamic_cast(&a) != 0;
}
Choice 4
template
bool is_int()
{
return typeof(T) |
t****t 发帖数: 6806 | |
m*****m 发帖数: 242 | 3 1 是不是选 3 吧?
throw B() 会先调用base contructor A(),然后 B();
尽管throw的是B(),但是B也是A, 而且 catch(A ex) 在前面, 所以调用catch(A
ex) ?
在 thrust (祝阳阳早日康复) 的大作中提到: 】 |
S**Y 发帖数: 136 | 4 I think you have typos
1.
you sure it is not
catch(A& ex) {
ex.Foo();
}
2. template specilization, but typos too.
【在 m*****m 的大作中提到】 : 1. : template : bool is_int(); : is_int must return true if T is int and false otherwise. How do you : implement is_int? : Choice 1 : template : bool is_int() : { : return T is int;
|
t****t 发帖数: 6806 | 5 跟你说你挨个试试不就知道了...有在这儿发文的时间, 10个题都试完了
【在 m*****m 的大作中提到】 : 1 是不是选 3 吧? : throw B() 会先调用base contructor A(),然后 B(); : 尽管throw的是B(),但是B也是A, 而且 catch(A ex) 在前面, 所以调用catch(A : ex) ? : 在 thrust (祝阳阳早日康复) 的大作中提到: 】
|
t****t 发帖数: 6806 | 6 你也应该试试再说人家是不是typo
【在 S**Y 的大作中提到】 : I think you have typos : 1. : you sure it is not : catch(A& ex) { : ex.Foo(); : } : 2. template specilization, but typos too.
|
m*****m 发帖数: 242 | 7 呵呵, 现在没有C++编译环境。 你说的对, 谢谢
【在 t****t 的大作中提到】 : 跟你说你挨个试试不就知道了...有在这儿发文的时间, 10个题都试完了
|
S**I 发帖数: 15689 | 8 应该是3;如果是catch(A& ex),那就应该是5。
【在 m*****m 的大作中提到】 : 1 是不是选 3 吧? : throw B() 会先调用base contructor A(),然后 B(); : 尽管throw的是B(),但是B也是A, 而且 catch(A ex) 在前面, 所以调用catch(A : ex) ? : 在 thrust (祝阳阳早日康复) 的大作中提到: 】
|
m*****m 发帖数: 242 | 9 能这样理解吗?
catch(A ex)是把 B slice后当A用, 而 catch(A& ex)是polymorphism
【在 S**I 的大作中提到】 : 应该是3;如果是catch(A& ex),那就应该是5。
|
S**I 发帖数: 15689 | 10 我觉得可以这么理解
【在 m*****m 的大作中提到】 : 能这样理解吗? : catch(A ex)是把 B slice后当A用, 而 catch(A& ex)是polymorphism
|
t****t 发帖数: 6806 | 11 第一个是调用了A::A(const A&)
第二个才是slice
【在 m*****m 的大作中提到】 : 能这样理解吗? : catch(A ex)是把 B slice后当A用, 而 catch(A& ex)是polymorphism
|
f*********r 发帖数: 68 | 12 for this problem
catch(A ex)调用A::A(const A&)
catch(A& ex)是polymorphism, not slice
【在 t****t 的大作中提到】 : 第一个是调用了A::A(const A&) : 第二个才是slice
|
f**y 发帖数: 138 | 13 It seems nobody here knows that the purpose of question number 1 is to test
template specialization.
general form:
template is_int() { return false; };
specialized form for int:
template <> is_int() { return true; };
So the choice is 5. |