首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在基类的构造函数中如何调用派生类的成员函数

2012-03-16 
在基类的构造函数中怎么调用派生类的成员函数?如下代码编译不过去classa{public:a()~a()virtualvoidRun(

在基类的构造函数中怎么调用派生类的成员函数?
如下代码编译不过去
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

热点排行