gpt4 book ai didi

c++ - 派生类中不可用的赋值运算符

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

基类中的赋值运算符在派生类中似乎不可用。鉴于此代码:

#include <iostream>

class A{
int value;
public:
A& operator=(int value){
this->value = value;
return *this;
}
};

class B : public A{};

int main(){
B b;
b = 0; // Does not work
return 0;
}

GCC 6.4 说:

error: no match for 'operator=' (operand types are 'B' and 'int')

发生了什么?

最佳答案

当我们自己不提供时,每个类至少隐式定义了一个赋值运算符。

当派生类中的成员函数被定义为与基类中的成员同名时,它会隐藏该名称的所有基类定义。

您可以使用 using 声明,但请注意,它将拉出 所有名为 operator= 的成员并允许使用如下代码:

A a;
B b;
b = a;

这有点可疑。

关于c++ - 派生类中不可用的赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551695/

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