c – 防止创建其成员函数都是静态的类

c – 防止创建其成员函数都是静态的类,第1张

概述我的类ClassA中的所有成员变量和成员函数都是静态的. 如果用户尝试(错误地)创建此类的对象,则会收到一条警告:“ClassA,本地变量从未引用”,因为所有函数都是静态的,因此该对象永远不会被引用.所以,我想阻止用户尝试创建这个类的对象. 创建私有默认(无变量)构造函数是否足够?或者我还要创建私有副本构造函数和私有赋值运算符(以防止使用默认构造函数)?如果我也必须创建它们,也许更好的是创建一些虚 我的类ClassA中的所有成员变量和成员函数都是静态的.

如果用户尝试(错误地)创建此类的对象,则会收到一条警告:“ClassA,本地变量从未引用”,因为所有函数都是静态的,因此该对象永远不会被引用.所以,我想阻止用户尝试创建这个类的对象.

创建私有默认(无变量)构造函数是否足够?或者我还要创建私有副本构造函数和私有赋值运算符(以防止使用默认构造函数)?如果我也必须创建它们,也许更好的是创建一些虚拟纯虚拟函数,这将阻止用户创建一个对象?

谢谢

解决方法 像其他人一样,命名空间是你应该使用的.如果你想留在你的课堂上,创建一个有一个私有构造函数的类,并从它派生出来,使你的意图显而易见:
class NonConstructible {     NonConstructible();};class SuperUtils: NonConstructible {    static voID foo();    // ...    static std::vector<int> globalIDs;    // ...};

好的,现在我们来看看命名空间,这是唯一的做法:

namespace SuperUtils {    voID foo() {        // ....    }    std::vector<int> globalIDs;};

你可以使用SuperUtils :: foo();但是在这两种情况下,命名空间的优点在于,在一个范围内,您可以使用命名空间声明和指令将某些或所有成员带入当前作用域,以便您可以引用它们而不使用SuperUtils :::

voID superFunction() {    using namespace SuperUtils;    foo();}

虽然一般应该避免这种情况,但是当该方法仅使用SuperUtils的很多东西时,这可能会有所帮助,从而可以提高代码的可读性.

总结

以上是内存溢出为你收集整理的c – 防止创建其成员函数都是静态的类全部内容,希望文章能够帮你解决c – 防止创建其成员函数都是静态的类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1248276.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存