gpt4 book ai didi

c++ - C++ 中的多态性(意外行为)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:12 26 4
gpt4 key购买 nike

我有以下三个类:

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。你知道为什么吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com