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类的内部工作原理,他们只需调用方法来获取他们需要的信息。