C++ (C+;+;)使类成为静态的更好方法是:将构造函数设置为私有还是公开删除?

C++ (C+;+;)使类成为静态的更好方法是:将构造函数设置为私有还是公开删除?,c++,c++11,constructor,C++,C++11,Constructor,我目前正在使用一个类,我希望它的成员在整个程序中都是相同的。所以我需要禁用这个类的构造函数的使用。 最好的方法是什么 将构造函数声明为私有 构造函数()=删除 编写最能说明您正在做什么的代码。如果希望类可以私有构造,请将构造函数设置为私有。如果你希望没有人能够构造这个类,那么请删除构造函数。编写最能解释你正在做什么的代码。如果希望类可以私有构造,请将构造函数设置为私有。如果您希望没有人能够构造该类,则删除该构造函数。使用名称空间而不是类。从这个问题中,我了解到您只使用类名进行范围界定,最好使用

我目前正在使用一个类,我希望它的成员在整个程序中都是相同的。所以我需要禁用这个类的构造函数的使用。 最好的方法是什么


  • 将构造函数声明为私有
  • 构造函数()=删除
    编写最能说明您正在做什么的代码。如果希望类可以私有构造,请将构造函数设置为私有。如果你希望没有人能够构造这个类,那么请删除构造函数。

    编写最能解释你正在做什么的代码。如果希望类可以私有构造,请将构造函数设置为私有。如果您希望没有人能够构造该类,则
    删除该构造函数。

    使用名称空间而不是类。从这个问题中,我了解到您只使用类名进行范围界定,最好使用名称空间。我不使用名称空间的原因是我仍然希望成员变量是私有的,以强制使用成员函数来管理它们@RichardCriteNoption 2在C++98中不可用,因此我们必须使用选项1。现在我们不必了。@AeroStun使用全局变量通常是一个错误(但有时不可避免)。也许这里的解决方案是将您的“类”变成一个实际的类,并使方法和私有变量成为非静态的。显式地传递对象是额外的工作,但由于它带来的清晰性,它是值得的。。。编写一个普通类,如果需要使用全局类。很少有案例证明单例模式是合理的,甚至比证明全局模式的案例还要少。使用名称空间而不是类。从这个问题中,我了解到您只使用类名进行范围界定,最好使用名称空间。我不使用名称空间的原因是我仍然希望成员变量是私有的,以强制使用成员函数来管理它们@RichardCriteNoption 2在C++98中不可用,因此我们必须使用选项1。现在我们不必了。@AeroStun使用全局变量通常是一个错误(但有时不可避免)。也许这里的解决方案是将您的“类”变成一个实际的类,并使方法和私有变量成为非静态的。显式地传递对象是额外的工作,但由于它带来的清晰性,它是值得的。。。编写一个普通类,如果需要使用全局类。很少有案例证明单例模式是合理的,甚至比证明全局模式的案例还要少。