关于C++:如何从重载函数调用父类成员函数?

How to call parent class member function from an overloaded function?

本问题已经有最佳答案,请猛点这里访问。

我创建了一个新类,它是从字符串类公开继承的。我希望重载派生类中的<运算符(小于)。但从重载函数中,我需要调用父类<运算符。调用这个函数的语法是什么?如果可能的话,我想把这个操作符作为一个成员函数来实现。

在Java中,有EDOCX1的2个关键字。

我的代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
#include<string>
using namespace std;    
class mystring:public string
    {
     bool operator<(const mystring ms)
     {
      //some stmt;
      //some stmt;
      //call the overloaded <( less than )operator in the string class and return the value
      }

    };


std::string没有operator<的成员重载,operator<有一个在std::string上运行的自由函数模板。你应该考虑让你的operator<成为一个自由的函数。要调用在std::string上运行的operator<,可以使用引用。

例如。:

1
2
3
const std::string& left = *this;
const std::string& right = ms;
return left < right;


如果您意识到它只是一个具有有趣名称的函数,那么调用基类运算符很容易:

1
2
3
4
5
6
bool operator<(const mystring ms)
{
  //some stmt;
  //some stmt;
  return string::operator<(ms);
}

唉,这不适用于std::string,因为operator<不是成员函数,而是自由函数。类似:

1
2
3
4
namespace std
{
    bool operator<(const string &a, const string &b);
}

其原理相同,称之为有趣的命名函数:

1
2
3
4
5
6
bool operator<(const mystring ms)
{
  //some stmt;
  //some stmt;
  operator<(*this, ms);
}