如何从重载函数调用父类成员函数?

时间:2014-02-12 14:16:07

标签: c++ visual-c++ g++

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

在Java中,有super个关键字。

我的代码如下。

#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
      }

    };

2 个答案:

答案 0 :(得分:1)

如果你发现它只是一个有趣名字的函数,那么调用一个基类的operawtor很容易:

bool operator<(const mystring ms)
{
  //some stmt;
  //some stmt;
  return string::operator<(ms);
}

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

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

理由是一样的,称之为有趣的命名函数:

bool operator<(const mystring ms)
{
  //some stmt;
  //some stmt;
  operator<(*this, ms);
}

答案 1 :(得分:1)

std::string没有operator<的成员重载,operator<上有std::string的免费功能模板。您应该考虑将operator<作为免费功能。要调用operator<上运行的std::string,您可以使用引用。

E.g:

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