2017-05-31 72 views
-3

我在使用父成员函数时虚函数的行为存在疑问。C++在父成员函数中使用虚函数的行为

class A { 
private: 
    vars; 
    virtual fn_v() {.....} 
public: 
    fn_A() { 
    fn_v(); 
    .... 
    } 

class B : public A { 
    .... 
public: 
    fn_v() {.....} 

当我打电话fn_A()从B的对象,该对象实现虚拟函数的将被调用?

+3

这取决于。通过指针或引用基类'A'类来调用函数吗?这个指针或引用是否真的是一个指针或对'B'类的实例的引用?然后调用'B :: fn_v'函数。 –

+7

你为什么不试试看? –

+0

它是类“B”的通用对象。 – PSK

回答

0

当我从调用虚拟函数的实现的B对象中调用fn_A()时,

当然在B的那个。这就是虚拟功能的意思。如果调用方法的对象是覆盖虚方法的类,则将调用覆盖。这是相当基本的。

+0

而且这也通过间接调用起作用?猜测是这样的...... –

+1

@PaulStelian我不知道'通过间接调用'到底是什么意思,但是只要方法调用的对象是一个覆盖虚方法的类,它就会工作。我不能说比这更平常。 – EJP