在c ++中为函数实现多个名称

the*_*man 5 c++ alias function

假设我有一个基本的2D矢量类

class vector2
{
  int x, y;
}
Run Code Online (Sandbox Code Playgroud)

这两个值可用于表示位置以及宽度和高度.C++是否为我提供了一个可以实现的功能vector2::getXpos(),然后定义vector2::getWidth()并让它使用相同的实现.

我知道我可以让这两个函数内联,但编译器可能决定不内联这些函数.所以如果getWidth刚刚调用getXpos你最终会有两个函数调用.

我想要使​​用它的一个更加复杂的例子是getLength()和嗯... getSpan()(当你说40"电视时想到这里的屏幕)

我会假设这将是一个类似于特殊函数定义的简单情况......我确实找到了这个页面,但这听起来像是一个C功能...而且有点破解工作.

编辑

我不是在询问内联函数的机制......我基本上想要在功能上做一些事情

class MyClass
{
  void ActaullyDoStuff();
  public:
  void foo(){ActaullyDoStuff();}
  void bar(){ActuallyDoStuff();}
}
Run Code Online (Sandbox Code Playgroud)

但在哪里我可以写出类似的东西

class MyBetterClass
{
  public:
  void foo(){ /* BLOCK OF CODE */ }
  void bar(){ /* DO WHAT EVER foo() DOES */ }
}
Run Code Online (Sandbox Code Playgroud)

我希望bar()成为另一种方式,foo()使得相同的功能代码可以根据情况具有不同的,更合适的名称.

小智 1

看来您没有以面向对象的方式考虑这个问题。我必须赞同 mjfgates 的建议,你真的不想这样做。

您想要做的是将向量的概念抽象为一个类,并实现您可能想要与向量一起使用的常用方法。事实上,您可能需要考虑将上面的类示例实现为“Point”类,然后使用“Vector”类聚合两个点类。

使用您的示例,如果您的类用于两个不同的目的,则它不会被很好地定义。假设您想在某个类上创建一个方法来绘制 vector2。您必须知道 vector2 的哪些实例代表起点,哪些实例代表宽度/高度。您可能还需要第三种表示形式来表示方向。更简单的方法是根据 getStartPoint、getEndPoint 以及任何其他可以进行适合向量计算的方法来实现向量。那么消费者不需要了解vector2类的内部工作原理,他们只需调用方法来获取他们需要的信息。