<分区>
我有以下三个类:
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; };
};
主要内容:
B *myHandler = new C();
myHandler->doSomething();
myHandler->doSomething2();
但输出不是预期的,我的预期输出是我是普通B
然后是我是C
,因为doSomething()
是B
类的非虚拟成员。但真正的输出是 I am C
然后是 I am C
。你知道为什么吗?