N****M 发帖数: 158 | 1 大银行面试题,各位高手求解。
Creating 一个 object to which 一个 callback function is passed, 使得当这个
object is destroyed时, the callback is executed。 |
f*****e 发帖数: 2992 | 2 constructor里放函数指针,destructor里调用函数。
【在 N****M 的大作中提到】 : 大银行面试题,各位高手求解。 : Creating 一个 object to which 一个 callback function is passed, 使得当这个 : object is destroyed时, the callback is executed。
|
b*******s 发帖数: 5216 | 3 就在析构器里面调用callback的指针咯
【在 N****M 的大作中提到】 : 大银行面试题,各位高手求解。 : Creating 一个 object to which 一个 callback function is passed, 使得当这个 : object is destroyed时, the callback is executed。
|
N****M 发帖数: 158 | 4 能不能给个完整一点结果啊,面试要求当时就写出完整的code。
【在 b*******s 的大作中提到】 : 就在析构器里面调用callback的指针咯
|
h*******s 发帖数: 8454 | 5 like this?
class MyClass {
public:
MyClass(Callback* cb)
: done(cb) {}
~MyClass() {
done->Gogogo();
}
private:
Callback* done;
};
【在 N****M 的大作中提到】 : 能不能给个完整一点结果啊,面试要求当时就写出完整的code。
|
b*******s 发帖数: 5216 | 6 不用传对象指针,一个函数指针就可以了
另外使用前先检查指针有效性,否则在析构器里面扔出异常要被骂的
【在 h*******s 的大作中提到】 : like this? : class MyClass { : public: : MyClass(Callback* cb) : : done(cb) {} : ~MyClass() { : done->Gogogo(); : } : private: : Callback* done;
|
R********n 发帖数: 519 | 7 哪个bank呢?银行一般只看到developer,很少看到quant developer?
【在 N****M 的大作中提到】 : 大银行面试题,各位高手求解。 : Creating 一个 object to which 一个 callback function is passed, 使得当这个 : object is destroyed时, the callback is executed。
|
h*******s 发帖数: 8454 | 8 errr, 又忘了检查指针了...
【在 b*******s 的大作中提到】 : 不用传对象指针,一个函数指针就可以了 : 另外使用前先检查指针有效性,否则在析构器里面扔出异常要被骂的
|
h*****f 发帖数: 248 | 9 I think the question is testing whether the candidate knows:
- how to declare and store function pointer
- the raii pattern (since this design is a variant of it)
- about the problem of throwing exception in destructor as brainless poitned
out.
class MyClass {
public:
MyClass(void (*cb)()) : done(cb) {}
~MyClass() {
if (done) {
try {
(*done)();
}
catch (...) {
// choice of exit, log, throw an alert to somewhere in the
system, or ignore
}
}
}
private:
void (*done)();
}; |
h*******s 发帖数: 8454 | 10 能解释一下跟raii是怎么联系上的么?
poitned
【在 h*****f 的大作中提到】 : I think the question is testing whether the candidate knows: : - how to declare and store function pointer : - the raii pattern (since this design is a variant of it) : - about the problem of throwing exception in destructor as brainless poitned : out. : class MyClass { : public: : MyClass(void (*cb)()) : done(cb) {} : ~MyClass() { : if (done) {
|
h*****f 发帖数: 248 | 11 I just feel that the similar pattern is used:
- something is memorized in the constructor: resource vs function pointer
here
- the memorized thing (resource vs function pointer) is semi-automatically
used in destructor -- RAII and this question both use the fact that C++
object's destructor will be called when it is destroyed. |
N****M 发帖数: 158 | 12 这个construction function 后面加冒号是什么意思啊,正在学习中,不知道叫什么名
字,查也查不到。
MyClass(void (*cb)()) : done(cb) {}
poitned
【在 h*****f 的大作中提到】 : I think the question is testing whether the candidate knows: : - how to declare and store function pointer : - the raii pattern (since this design is a variant of it) : - about the problem of throwing exception in destructor as brainless poitned : out. : class MyClass { : public: : MyClass(void (*cb)()) : done(cb) {} : ~MyClass() { : if (done) {
|
f*****e 发帖数: 2992 | 13 不会的话就找个你会的行业不就行了吗。
【在 N****M 的大作中提到】 : 这个construction function 后面加冒号是什么意思啊,正在学习中,不知道叫什么名 : 字,查也查不到。 : MyClass(void (*cb)()) : done(cb) {} : : poitned
|
h*****f 发帖数: 248 | 14 It is called initialization list.
Google for it. It is very useful to learn it :)
【在 N****M 的大作中提到】 : 这个construction function 后面加冒号是什么意思啊,正在学习中,不知道叫什么名 : 字,查也查不到。 : MyClass(void (*cb)()) : done(cb) {} : : poitned
|