C++赋值兼容问题,简单的说一下,赋值兼容何时调用基类的成员函数,什么情况下才会调用派生类的成员函数
展开全部
对基类调用非虚函数时总是调用基类的成员函数。
对基类调用虚函数时:
1.对基类对象进行赋值时,调用的是基类的成员函数。
2.对基类的对象引用和基类的对象指针进行赋值时,调用的是子类的成员函数。
class A
{
public:
virtual void foo() {}
};
class B : public A
{
public:
virtual void foo() {}
};
B b;
A a = b;
a.foo(); //调用A类的foo函数
A& a = b;
a.foo(); //调用B类的foo函数
A* a = b;
a->foo(); // //调用B类的foo函数
对基类调用虚函数时:
1.对基类对象进行赋值时,调用的是基类的成员函数。
2.对基类的对象引用和基类的对象指针进行赋值时,调用的是子类的成员函数。
class A
{
public:
virtual void foo() {}
};
class B : public A
{
public:
virtual void foo() {}
};
B b;
A a = b;
a.foo(); //调用A类的foo函数
A& a = b;
a.foo(); //调用B类的foo函数
A* a = b;
a->foo(); // //调用B类的foo函数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询