gpt4 book ai didi

c++ - 为什么对基类的赋值有效,而对派生类的赋值却是编译错误?

转载 作者:IT老高 更新时间:2023-10-28 12:30:30 25 4
gpt4 key购买 nike

这是一道面试题。考虑以下几点:

struct A {}; 
struct B : A {};
A a;
B b;
a = b;
b = a;

为什么 b = a; 会报错,而 a = b; 却完全没问题?

最佳答案

因为B的隐式声明的复制赋值操作符隐藏了A的隐式声明的复制赋值操作符。

所以对于b = a这行,只有Boperator=是候选。但它的参数类型为 B const&,不能由 A 参数初始化(您需要向下转换)。所以你得到一个错误。

关于c++ - 为什么对基类的赋值有效,而对派生类的赋值却是编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549795/

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