问题标签 [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 投票
7 回答
3472 浏览

c++ - Which is the difference between declaring a constructor private and =delete?

For example, I want to declare a class but I want the client to not be able to use the copy constructor (or copy assignment operator)

Both of the following two does not allow the use of the copy constructor:

1.

2.

Is one of these ways "more correct" than the other or are equal? Is there any side-effect?

0 投票
1 回答
793 浏览

c++ - 如何在 C++ 中正确地向下转换

出于任何原因,我有一个由调用私有构造函数的静态方法创建的对象。(这不是单例)

我想从第一个派生一个新对象,它有更多的成员和功能。
但这是有问题的,因为静态方法返回一个firstObject*对象,因此向下转换的创建secondObject*会导致内存溢出。

我应该怎么办?我可以访问第一个对象的代码,但不可能更改它的构造函数(如果我更改它,我将不得不更改一个巨大的书面代码)。

编辑:

感谢所有响应者。我可以更改要保护的构造函数。

0 投票
1 回答
3017 浏览

c++ - 使用 GMOCK 模拟具有私有构造函数的类

我有一个带有私有 Tor、Dtor 和一个 getInstance() 方法的 Singleton 类。

我需要使用 GMOCK 模拟这个类。有什么办法可以模拟它。

0 投票
6 回答
12746 浏览

java - 为什么 HTTPServlet 是一个抽象类?任何功能原因?

HttpServlet是一个包含所有实现方法的抽象类。为什么是抽象的?

我得到的最常见的答案是,限制HttpServlet. 但是还有其他方法可以做到这一点,例如私有构造函数将限制实例化。

我可以理解他们遵循模板方法设计模式。如果某些方法是抽象的,用户最终将实现所有这些方法,即使他的业务逻辑不需要它们。

但是如果HttpServlet不是抽象的,用户仍然可以扩展它并覆盖 require 方法。

至少按照“抽象”这个词的字典含义,拥有一个包含所有已实现方法的抽象类对我来说没有任何意义。

是的,抽象和具体方法的组合是可以的。

但是,如果您要创建一个类抽象,为什么不将子类必须重写的那些方法抽象化呢?或者可能根本不将其声明为抽象?

喜欢doGet()还是doPost()这种情况。

0 投票
2 回答
880 浏览

scala - 在宏中使用私有构造函数

我想在宏中使用私有构造函数。这个例子是一个正整数,但基本模式不仅可以用于其他数字类型,如偶数,还可以用于字符串派生类型,如电子邮件地址或目录名称。通过将构造函数设为私有,用户被拒绝创建非法类型的机会。我有以下代码:

但是,如果我将 PosInt 构造函数设为私有,尽管宏按预期编译,但如果尝试使用宏,则会出现错误。我无法弄清楚如何手动构建表达式树,但我不确定这是否会有所帮助。无论如何我可以做到这一点吗?

即使 PosInt 不是值类,您仍然不能使用私有构造函数。我会接受不使用值类的答案。值类的缺点是它们会被类型擦除。加上我感兴趣的类,比如 2d 坐标的子集,无论如何都不能作为值类来实现。我实际上对正整数并不感兴趣,我只是将它们用作一个简单的测试平台。我正在使用 Scala 2.11M5。Scala 2.11 将添加 quasiquotes 功能。我还没有弄清楚如何使用准引号,因为目前它们上的所有材料似乎都假定我对 Macro Paradise 很熟悉,而我没有。

0 投票
3 回答
599 浏览

c++ - C++如何定义静态成员,哪个类有私有构造函数?

我试图在 C++ 中模仿 Java 枚举,所以我创建了如下所示的代码(当然,我删除了与我的问题无关的任何内容):

我的枚举.hpp

我将构造函数设为私有,因此枚举值的唯一实例是 BaseEnum 的静态成员。如何定义它们?

我的枚举.cpp

这给了我

编辑:那太简单了。我刚刚忘记将 MyEnym:: 添加到值中。我从 Java 回到 C++ 时遇到的许多日常小问题之一。另外,在我的问题代码中,我忘记添加朋友声明,这是我的原始代码中的。感谢您的回答。

0 投票
3 回答
24742 浏览

scala - Scala案例类私有构造函数但公共应用方法

如果我有以下带有私有构造函数的案例类,并且我无法访问伴随对象中的应用方法。

有没有办法使用带有私有构造函数的案例类,但将生成的应用方法保留在伴随的公共中?

我知道这两个选项之间没有区别(在我的示例中):

但我想禁止第一个选项。

- 编辑 -

令人惊讶的是,以下作品(但不是我真正想要的):

0 投票
2 回答
339 浏览

c++11 - 对象的单个实例

我正在尝试用 C++11 实现一个类似单例的对象。我从另一个用户那里得到了这个例子。

它使用构造函数和复制构造函数私有和默认创建一个对象,以及一个 instance() 函数来返回静态对象。

据我了解,这应该防止创建该对象的两个实例。但正如您在我的 main.cpp 中看到的那样,我创建了两个实例,它编译并运行。

我的对象创建错误还是什么?我不明白。

对象.hpp:

主.cpp:

0 投票
1 回答
6269 浏览

java - 抽象类与私有构造函数

我有一个只有静态方法和字段的 java 类,所以我不希望为此创建任何对象。我可以通过两种方式实现这一点,

  1. 使课程抽象。
  2. 使用私有构造函数。

两者哪个更好?

0 投票
2 回答
1335 浏览

java - 具有默认构造函数的抽象类和具有私有构造函数的类的区别

具有默认构造函数的抽象类和具有私有构造函数的类之间有什么区别?

我还有另一个疑问,请考虑下面的这个程序。谁能解释一下。这样的代码有什么用吗?