C中的(base – > *&Func)()是什么意思
发布时间:2020-12-16 03:36:56 所属栏目:百科 来源:网络整理
导读:这是简单的类定义,如 class Base{ public: virtual void Func(){ cout"Func in Base"endl; } }; class Derived : public Base{ public: virtual void Func(){ cout"Func in Derived"endl; } } Base *b = new Derived(); 和声明 (b-*Base::Func)(); 调用Func
这是简单的类定义,如
class Base{ public: virtual void Func(){ cout<<"Func in Base"<<endl; } }; class Derived : public Base{ public: virtual void Func(){ cout<<"Func in Derived"<<endl; } } Base *b = new Derived(); 和声明 (b->*&Base::Func)(); 调用Func的派生版本,不同于b-> Base :: Func(),它按预期调用基本版本,为什么会发生这种情况,这个调用的含义到底是什么? 解决方法
这个电话的意思是增加冗长.基本上:
expression& Base :: Func是指向成员函数的指针,和 (b-> * x)()是调用成员函数的语法 由x指向b指向的对象.在这 case,因为x是常量,它与写入大致相同 *安培;变量.它意味着与b-> Func()相同. 至于为什么它的行为与b-> Base :: Func不同,它就是 void (Base::*pmf)() = &Base::Func; 并呼吁 (b->*pmf)(); 你期望正确调用虚函数.所有你发布的表达式是替换变量pmf不变的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |