在基类的构造函数中怎么调用派生类的成员函数?
如下代码编译不过去
class a
{
public:
a();
~a();
virtual void Run()=0;
}
a::a()
{
Run(); //我想在基类的构造函数中调用派生类的成员函数,
//因为其具体实现在派生类
}
class b:public a
{
b();
~b();
virtual void Run();
}
void b::Run()
{
......
}
[解决办法]
不要试图做这种事!虽然java等语言是支持这个行为的。
但是在语意上,这个行为是一个错误。
把这种需求从构造函数里挪出去,让用户在构造完对象后再手工调用这些操作。
[解决办法]
这个是办不道的!
[解决办法]
是危险的举动,强行来只能让事情更遭
就像老爸管没有出生的儿子要钱…………
[解决办法]
构造函数和析构函数中调用的函数.都是本地的. 因为它们都会先把对象的vptr指向本类的vtable. 也就没办法多态. 这个在 < <深度探索c++对象模型> > 上讲过. 楼主看看啊.
[解决办法]
不要试图在ctor和dtor中调用虚函数。看看《Effective C++》。
[解决办法]
http://www.artima.com/cppsource/nevercall.html