c++ - 静态函数对类构造的好处

标签 c++ constructor

我见过这样的代码,所以我想找原因。 使用充当构造函数而不是实际构造函数的静态函数的主要原因是什么?

我的意思是:

class MyClass
{
    public:
    static MyClass CreateFrom( bar );
    static MyClass CreateFrom( foo );
    ...
}

代替:

class MyClass
{
    public:
    MyClass( bar );
    MyClass( foo );
    ...
}

最佳答案

这被称为“命名构造函数惯用语”。

通常在以下情况下使用:

  1. 您有很多具有足够相似参数列表的 ctors,重载的 ctors 会造成混淆(例如,整数和 float 的不同混合,因此 1, 1.0, 1 应该表示与 1, 1, 1.0 不同的东西)。
  2. 您有两个不同的来源,它们都提供相同类型的输入。例如,假设您想要将地球表面上的距离转换为相隔一定距离的点之间所夹的角度——但您可能想要以英里或公里为单位提供距离,其中任何一个都将表示为

在这种情况下,单个 angle(double dist) 无法区分以公里和英里为单位的输入,但是:angle_from_milesangle_from_kilomters 可以很容易地做到这一点。

关于c++ - 静态函数对类构造的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118171/

相关文章:

c++ - cpp中的构造函数无限循环

c++ - 为方阵创建构造函数的问题

java - 创建通用数组

c++ - 我怎样才能打印这个数组的四个角?以及如何确定列是否严格升序

c++ - map中operator[]插入的指针类型的值是否总是NULL?

c++ - 串口异步IO

c++ - 内联构造函数可以在 C++ 中使用初始化列表吗?

c++ - 需要帮助解决三个 visual studio 错误 - 尝试构建解决方案时出现 C++ 错误

c++ - 从 .txt 文件填充数组

java - 我不明白私有(private)构造函数如何不能在外部创建实例并阻止子类化(当他这样做时!)