假设我有一堂课。我希望它有一个构造函数,它可以接受某些参数,所以我创建一个。即使我不需要它,我仍然需要一个没有参数的构造函数(默认构造函数)吗?换句话说,即使我不需要它,的是否包含Class()
作为成员函数?你必须有一个默认的构造函数吗?
回答
不需要。创建一个能够满足你需要的课程,而不是无缘无故依附于货物崇拜的课程。如果有疑问,橡皮鸭会上课。
“橡皮鸭”? – 2014-10-27 17:20:33
@MikeSeymour:[是](http://en.wikipedia.org/wiki/Rubber_duck_debugging)。 – 2014-10-27 17:21:06
或泰迪轴承! – codenheim 2014-10-27 17:21:35
不,如果你不需要它,那么你不需要它。
你只需要它,如果你想能够默认初始化类。通常你不需要这样 - 你只想让对象存在,如果它们是用你写的构造函数正确初始化的 - 这就是为什么声明你自己的构造函数会删除隐式的默认构造函数。
如果您想对类进行初始化值,您还需要它。 – 2014-10-27 17:18:29
@KerrekSB:确实;尽管一旦你声明了一个构造函数,这也是一样的。 – 2014-10-27 17:19:48
构造函数决定如何实例化你的类。所以,设计构造函数取决于你。有时您希望该类的用户仅通过为数据成员指定值(而不是具有某个默认值)通过排除该类的默认构造函数来创建对象。
- 1. 约束 - 派生类必须有一个默认构造函数
- 2. 是规定必须有默认的构造函数在C++中
- 3. IXmlSerializable类型'System.Xml.Linq.XElement'必须具有默认构造函数
- 4. C++:一个必须具有默认超类构造函数的继承?
- 5. 子类构造函数 - 为什么必须为子类构造函数存在默认构造函数?
- 6. 是构造函数生成的默认构造函数吗?
- 7. 从另一个构造函数调用默认构造函数
- 8. 构造函数必须显式初始化没有默认构造函数的成员
- 9. C++一个类的默认构造函数调用另一个类的另一个默认构造函数
- 10. 必须有一个公共无参数构造函数,它不?
- 11. 必须删除一个构造函数是否是私有的?
- 12. 有一个默认的构造函数创建一个对象
- 13. 正在编写一个默认的构造函数吗?
- 14. 没有适当的默认构造函数可用,尽管使用了默认的构造函数吗?
- 15. com.sun.faces.config.ConfigurationException:CONFIGURATION FAILED!必须有一个构造函数在BehaviorConfig
- 16. “RavenReader.Web.Controllers.UserController”没有默认的构造函数
- 17. System.Configuration.Cast没有默认的构造函数
- 18. 没有默认的构造函数
- 19. GSON连载名:“隐超构造函数对象()是未定义默认的构造函数必须定义一个明确的构造函数。”
- 20. java.lang.StackTraceElement中没有一个无参数的默认构造函数
- 21. 类默认构造函数
- 22. 默认构造函数
- 23. 非默认构造函数
- 24. C++,默认构造函数
- 25. constexpr默认构造函数
- 26. 非默认构造函数
- 27. 默认构造函数未定义隐式超级构造函数getdata()。必须定义一个明确的构造函数
- 28. 构造一个通用对象(不是默认构造函数)
- 29. 那么一个类可以有两个默认的构造函数吗?
- 30. DatabaseManager没有默认构造函数
不,你不*有*。是什么让你问这个? – Cornstalks 2014-10-27 17:17:07
我认为这取决于你需要什么 – 2014-10-27 17:17:11
如果它从未被调用过,那就没有必要。但如果你未能在另一个类的初始化列表中初始化你的类,它可能会被间接引用(将弹出编译器错误) – Creris 2014-10-27 17:17:15