问题标签 [private-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6830 浏览

java - 为工厂方法使用私有构造函数?

假设我正在构建一个不可变的 Yahtzee 记分卡类:

基本上我不想暴露班级的内部。如果我没有私有构造函数,那么我将需要使用带有Map参数的公共构造函数,就像私有构造函数一样(而且我基本上也可能会丢失该withScore()方法)以允许评分。但这是一种有效的工厂方法吗?

0 投票
2 回答
1112 浏览

c++ - C++中的私有构造函数

我是 C++ 新手,我正在尝试使用如下所示的 LinkedListIterator 实用程序类编写 LinkedList 类。(我只列出了与问题相关的代码部分)。我已将 LinkedListIterator 构造函数创建为私有的。

现在,当我在 main() 中有这两行时,

我得到了第二行的编译错误,这是预期的,因为默认构造函数是私有的。但是,我不明白为什么第一行没有编译错误?为什么 ?代码的第一行调用了什么?私有构造函数或复制构造函数或赋值运算符?

代码

0 投票
2 回答
428 浏览

c++ - 带有私有构造函数的 C++ 静态列表

如果有人问过这个问题,我深表歉意,我不确定如何用最好的词来形容它,也找不到它。

我基本上有一个类,我想维护一个自身的映射,并且该列表应该具有该对象的唯一实例。

当我编译我的代码时,它基本上给了我一堆来自 STL 的错误,说它正在调用已删除的函数等,这是有道理的,因为 unordered_map 可能使用构造函数和析构函数,所以我将 unordered_map 声明为朋友

然而,似乎没有更少的错误,我推测这是由于 unordered_map 使用的类,如pair和hash。所以我的问题是是否有替代方案。我应该只声明更多似乎从编译器中出错的朋友,还是有另一种方法?

0 投票
4 回答
5968 浏览

java - 没有值的 java 枚举和具有私有构造函数的实用程序类之间的区别

对实用程序类的常见做法是给它们一个私有构造函数

但不幸的是,有些工具不喜欢那个私有构造函数。他们可能会警告它永远不会在类中调用,它没有被测试覆盖,该块不包含注释等。

如果你这样做,很多警告就会消失:

我的问题是:除了对未来开发人员的无休止的仇恨之外,在 Java 中没有值的枚举和具有私有构造函数的类之间有什么重要区别?

请注意,我不是在问Java 枚举与具有公共静态最终字段的类相比有什么优势?. 我不是在一个事物列表应该是一堆常量还是一个枚举之间做出决定,我是在将一堆函数放在一个无构造函数的类中还是一个无值的枚举中做出决定。

另请注意,我实际上并不想这样做。我只想知道作为一般语言知识的一部分的权衡。

例如,使用枚举会使用无用的方法(如UtilClass.values(). 还有哪些其他缺点?好处?

0 投票
1 回答
595 浏览

c++ - C ++中的Pimpl习语和私有构造函数

在 pimpl idiom 中,所有私有成员和函数都被移动到(私有)实现类。如果一个类有一个私有构造函数应该怎么办?是否应该将其移至实施?如果是,如何?

0 投票
2 回答
176 浏览

c++ - 如何使用具有不可复制类的向量(或不同的容器)?

我有以下代码:

PrepareLogFileThread继承自使用的Threadpthread(我们使用 c++98 标准....,我可以使用auto_ptr)。

这里的问题是Thread' 的复制构造函数是私有的,因此不会弄乱执行或其他东西(我不是这个类的作者)。

这里的想法是我创建我的PrepareLogFileThread对象push_backv启动它们,然后它们都在f返回之前完成。

PrepareLogFileThread有析构函数调用,pthread_join以便它在那里完成。

但我不能,因为我复制a符合push_back.

Thread如果没有 c++11 和更改的复制构造函数,我怎么能做到这一点?

我正在使用 gcc 4.4.6,我可以使用auto_ptr.

0 投票
1 回答
2674 浏览

java - 为什么 System 类声明为 final 并带有私有构造函数?

据我了解

最后一堂课

final 类只是一个不能扩展的类。

具有单个无参数私有构造函数的类

不能实例化具有私有构造函数的类,除非在同一个类中形成形式。这使得从另一个类扩展它毫无用处。但这并不意味着它根本不能被子类化,在内部类中我们可以扩展和调用私有构造函数。

所以我的理解是,如果我们创建一个带有单个无参数私有构造函数的类,那么将该类声明为 final 是没有意义的。那么为什么Java中的System类,尽管它有一个无参数的私有构造函数,却声明为最终类?

我听说让班级决赛有一些成绩。这是正确的吗?这是将 System 类声明为 final 的唯一原因吗?请澄清我为什么 Java 实现了这样的 System 类。

0 投票
3 回答
13234 浏览

c++ - 复制构造函数被隐式删除,因为默认定义格式不正确

我有一个类A(来自一个我无法控制的库),它带有一个私有复制构造函数和一个clone方法,以及一个BA. 我也想clone实现B

天真的方法

但是,失败了,因为 的复制构造函数A是私有的:

可能有一种方法可以使用A::clone()for B::clone(),但我不确定这将如何工作。有什么提示吗?

0 投票
2 回答
690 浏览

jsp - 单例是否适用于 servlet/jsp 项目?

我正在使用以下代码为我的简单 jsp/servlet 登录项目(即单例)连接到数据库。当我第一次登录时,它在我成功注销后工作。现在问题开始了,当我再次尝试登录时出现错误提示“严重:错误消息:连接关闭后不允许操作。” 但是,当我删除代码关闭连接时,它又可以正常工作了。请建议我应该使用它还是避免它。

0 投票
3 回答
3864 浏览

c# - Json.NET - 如何使用内部构造函数序列化外部类?

我需要序列化一个其源代码不能更改的类(将此作为事实),并且它来自不同的程序集。它只有一个构造函数

JsonConvert.SerializeObject(object)因此当然失败了。我想知道是否有一种方法可以使用 Json.NET 来序列化此类,而无需添加代码甚至标记。