I****k 发帖数: 35 | 1 Given the class definition as follows, what the output of B objB ?
class A{
public: A(){this->foo();}
virtual void foo()=0 {cout<<"A::Foo()"<
};
class B : public A{
public: B(){this->foo();}
virtual void foo(){cout<<"B::Foo()"<
};
The output should be
A::Foo()
B::Foo()
原因是不是因为this只能表示当前的对象?还是因为vtable在ctor的时候还没有建立起
来?多谢了,我的概念不是很清楚。。。 |
w***g 发帖数: 5958 | 2 我觉得在ctor中调用virtual function的结果是未知的。
【在 I****k 的大作中提到】 : Given the class definition as follows, what the output of B objB ? : class A{ : public: A(){this->foo();} : virtual void foo()=0 {cout<<"A::Foo()"<: }; : class B : public A{ : public: B(){this->foo();} : virtual void foo(){cout<<"B::Foo()"<: }; : The output should be
|
h****e 发帖数: 2125 | 3 http://www.codeguru.com/cpp/tic/tic0162.shtml
【在 I****k 的大作中提到】 : Given the class definition as follows, what the output of B objB ? : class A{ : public: A(){this->foo();} : virtual void foo()=0 {cout<<"A::Foo()"<: }; : class B : public A{ : public: B(){this->foo();} : virtual void foo(){cout<<"B::Foo()"<: }; : The output should be
|