gpt4 book ai didi

c++ - 我可以覆盖运算符的重载并返回不同的类型吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:48 24 4
gpt4 key购买 nike

class A{
public:
virtual char &operator[](int);
protected:
..
};
class B:A{
public:
A* &operator[](int);
protected:
}

当我重载运算符的重载时,我可以更改返回类型吗?

谢谢!

//编辑好的,既然我们确定这行不通,我该如何解决?

假设我有 A、B、C 和 D 类。

class A{
public:
private:
char &operator[](int);
protected:
..
};
class B:A{
public:
virtual char &operator[](int);
};
class C: A{
public:
private:
A::&operator[](int);
}
class D: A{
public:
private:
A::&operator[](int);
}

我可以做这样的事情吗?如果是,这是正确的语法吗?

最佳答案

不是这样的,不是。

覆盖的返回类型必须是

  • 与被覆盖的虚函数的返回类型相同,或者
  • 被覆盖的虚函数的返回类型的派生类(这称为“协变返回类型”)。

因此,如果一个虚拟 A::operator[] 返回一个 A*,那么一个 B::operator[] 重载可以返回一个 B*

关于c++ - 我可以覆盖运算符的重载并返回不同的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947183/

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