我见过这样的代码,所以我想找原因。
使用充当构造函数而不是实际构造函数的静态函数的主要原因是什么?
我的意思是:
class MyClass
{
public:
static MyClass CreateFrom( bar );
static MyClass CreateFrom( foo );
...
}
代替:
class MyClass
{
public:
MyClass( bar );
MyClass( foo );
...
}
最佳答案
这被称为“命名构造函数惯用语”。
通常在以下情况下使用:
- 您有很多具有足够相似参数列表的 ctors,重载的 ctors 会造成混淆(例如,整数和 float 的不同混合,因此
1, 1.0, 1
应该表示与1, 1, 1.0
不同的东西)。 - 您有两个不同的来源,它们都提供相同类型的输入。例如,假设您想要将地球表面上的距离转换为相隔一定距离的点之间所夹的角度——但您可能想要以英里或公里为单位提供距离,其中任何一个都将表示为
双
。
在这种情况下,单个 angle(double dist)
无法区分以公里和英里为单位的输入,但是:angle_from_miles
和 angle_from_kilomters
可以很容易地做到这一点。
关于c++ - 静态函数对类构造的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118171/