有没有一种方法可以将现有函数用作类的一部分?如果是,如何

Is there a way to use an existing function as a part of a class? If yes, how?

本文关键字:一部分 如何 如果 函数 一种 方法 有没有      更新时间:2023-10-16

我有一个函数,我想在不同的类中使用。这可能吗?

示例:

int getNumber()
{
  // do something here that will use some values like:
  int number = num * pi;
  return number;
}
class Human
{
  int num;
  // other member
  int getNumber(); // same as above
}
class Robot
{
  int num;
  // other member
  int getNumber(); // same as above
}

getNumber()函数可以短为return num;,也可以长为取决于函数内部的计算。

getNumber()内部的num值是HumanRobot类的num成员。尽管如此,这些课程并没有亲子关系或朋友关系。

这当然很容易。虽然在C++中没有用于委托的甜美语法(遗憾的是,这带来了很多继承的滥用…)

1.自由功能方式

int transformNumber(int num) { return num * pi; }
class Human {
public:
    int getNumber() const { return transformNumber(num); }
private:
    int num;
};

2.合成方式

struct NumberThing {
    int num;
    int getNumber() { return num * pi; }
};
class Human {
public:
    int getNumber() { thing.getNumber(); }
private:
    NumberThing thing;
};

选择你最喜欢的。

创建一个具有此功能的类,并扩展使用该功能的其他类。

这是一个使用继承的好实例。这两个对象都有共同点,这通常意味着它们实际上是一个更通用类的子类:

class Being
{
    int num;
    int getNumber() {/* .. */}
}
class Robot: public Being
{
}
class Human: public Being
{
}