0

假设我们有一个类

class Abstract {
    Abstract( void );
    virtual ~Abstract( void ) = 0;

    virtual void VirtualFunction( void ) = 0;

    static void CallsVirtual( void ) {
        VirtualFunction();
    }
};
class Concrete : public Abstract {
    Concrete( void ) {}
    ~Concrete( void ){}
    virtual void VirtualFunction( void ) {/* Do virtual function-y stuff */}
};

int main( void ) {
    Concrete _concrete;
    Abstract& _abstractReference = _concrete;

    _abstractReference.callsvirtual();
}

通过指向派生类的基类指针调用基类静态成员函数时,会调用哪个虚成员函数?

4

2 回答 2

4

两者都不。你会得到一个编译器错误。您不能调用非static方法或从方法访问非static成员static

//...
virtual void VirtualFunction( void ) = 0;

static void CallsVirtual( void ) {
    VirtualFunction();   // Nope!
}
//...
于 2012-08-28T15:59:35.393 回答
0

使用this指针调用非静态成员函数。指针隐式传递给每个this成员函数。
但是,对于static成员函数,this指针根本不传递。因此,您不能通过静态成员函数调用非静态成员函数。

于 2012-08-28T16:02:52.863 回答