gpt4 book ai didi

c++ - 在 C++ 中作为参数传递的对象中的方法的执行

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:06 25 4
gpt4 key购买 nike

<分区>

我有一个 Rabbit 结构和继承它的 CrazyRabbit 结构。当我执行这段代码时:

#include <iostream>

using namespace std;

struct Rabbit {
virtual void sayCry() {
cout << "..." << endl;
}
};

struct CrazyRabbit : Rabbit {
void sayCry() { cout <<"Moo"<< endl; }
};

void foo(Rabbit r, Rabbit* pr, Rabbit& rr) {
r.sayCry();
pr->sayCry();
rr.sayCry();
}

int main(int argc, char *argv[]) {
Rabbit *pr = new CrazyRabbit();
foo(*pr, pr, *pr);
}

我有结果:

...
Moo
Moo

为什么第一种情况执行父类(super class)中的方法? C++有没有定义执行规则?

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