如何使一个可以在对象上调用的函数与该类的成员函数相同

How to make a function that can be called on an object the same way as the member functions for that class?

本文关键字:函数 成员 调用 何使一 对象      更新时间:2023-10-16

例如,如果您有一个std::string类的对象,您可以如下调用compare(string str)函数:

myString.compare(myOtherString);

如何制作自己的函数,以便以相同的方式对字符串进行调用?示例:

myString.contains(char[] chars);

您不能在C++中向现有类添加成员函数。相反,编写一个非成员函数

bool contains(std::string const & s1, std::string const & s2);

并称之为

contains(myString, myOtherString);

在C++中不能真正做到这一点,也不应该尝试。当然,您可以从std::string继承并实现您的方法,但是您的方法将无法从常规字符串中使用。在C++中,我们不会太努力地把所有东西都变成类方法——自由函数也是函数!