gpt4 book ai didi

c++ - 此 C++ 代码可移植吗?

转载 作者:太空狗 更新时间:2023-10-29 23:21:54 24 4
gpt4 key购买 nike

struct A {
int a;
virtual void print() {}
};

struct B : A {
int b;
virtual void print() {}
};

int main(void)
{
A *a = new B;
a[0].print(); // g++, vs2010, clang call B::print.
}

所有三个 g++、vs2010、clang 调用 B::print。几乎怀疑我的 C++ 101。我的印象是对对象使用点不会导致动态调度。只有 -> 带有指针和带有引用的点将导致动态调度。

所以我的问题是这段代码是否可移植?

最佳答案

a[0]*a 相同,该表达式是对 A引用>,并且虚拟分派(dispatch)通过引用发生,就像它通过指针发生的一样。 a->print()(*a).print() 完全相同。

关于c++ - 此 C++ 代码可移植吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840637/

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