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