gpt4 book ai didi

c++ - 这个问题叫什么?如果通过基类型传递结构,则后代类型中的字段在方法中不可用

转载 作者:行者123 更新时间:2023-11-30 03:01:59 27 4
gpt4 key购买 nike

我正在研究一个看起来像这样的问题:

struct A { ... }
struct B : A { int more; }

void Method(A a) { ... }

它是这样工作的:你将 B 的一个实例传递给方法,然后在主体中不能再访问 more 字段了吗?

我想记住这个的名字,但我记不住了。在 Google 上进行搜索只会让我一无所获。

谁能告诉我名字,以便我继续研究更多?

最佳答案

我认为实际上您所说的是切片。当您通过基类型的参数按值传递某个派生类型的 C++ 对象时,派生部分将被“切掉”,即使通过转换为派生类型也无法访问它们。

问题的解决方案是使用引用参数——即

void Method(A &a) { ... }

然后你可以传递一个 B 对象给这个函数而不破坏 B 部分。

关于c++ - 这个问题叫什么?如果通过基类型传递结构,则后代类型中的字段在方法中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509928/

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