C++ 禁用子 class 中的重载运算符

C++ disable an overloaded operator in child class

我有这个字符串 class,我在其中重载了运算符 + 以连接字符串。

class String {
    private:
      char* value;
    
    public:
      String(char*);
      String operator+(String&);
    };

int main() {
  String s1("Hello");
  String s2(" world!");
  String s3 = s1 + s2;

  cout << s3 << endl;

  return 0;
}

结果: 世界,您好!

我声明了一个新的 class GoodString,它是字符串 class 的子字符串。我想禁用重载运算符。我尝试了一些东西但没有成功。 有什么建议吗?谢谢!

将其声明为重写的私有方法。此外,下次为 GoodString class.

添加代码

你有两种可能。

  1. 覆盖 private 可见性
class GoodString : public String {
private:
    String operator+(String&);
};
  1. delete 运算符 (c++11 起)
class GoodString : public String {
public:
    String operator+(String&) = delete;
};