wai*_*r92 1 c++ polymorphism inheritance virtual-functions
我有以下三个课程:
class A
{
private:
std::string device;
public:
std::string getDeviceType() { return device; };
void setDeviceType(std::string device) { device = device; };
virtual void doSomething() = 0;
virtual void doSomething2() = 0;
};
class B: public A
{
private:
public:
B(){ ; };
virtual ~B(){ ; };
void doSomething() { std::cout << "I am usual B" << std::endl; };
void virtual doSomething2() { std::cout << "I am usual B" << std::endl; };
};
class C : public B
{
private:
public:
C(){ ; };
~C(){ ; };
void doSomething() { std::cout << "I am C" << std::endl; };
void doSomething2() { std::cout << "I am C" << std::endl; };
};
Run Code Online (Sandbox Code Playgroud)
主要:
B *myHandler = new C();
myHandler->doSomething();
myHandler->doSomething2();
Run Code Online (Sandbox Code Playgroud)
但输出不是预期的,我的预期输出是I am usual B
,然后I am C
,因为doSomething()
是一个非虚拟的类成员B
.但真正的输出是I am C
然后I am C
.你知道为什么吗?