【发布时间】:2013-02-04 01:28:29
【问题描述】:
可以用具有相同参数的私有构造函数重载构造函数吗?
基本上,如果某个东西存储了一个正整数,那么在公共构造函数中它会确保存储的是一个正整数,而在私有构造函数中它不会执行检查。
很明显这个例子不是一个合适的用法,但有时你想在一个方法中创建一个对象并且你不希望它浪费时间来执行完全安全的初始化;当您稍后要再次执行它们或者它们只是不必要的时候,您可能只想告诉它在没有特殊检查的情况下立即创建一些东西(或者更谨慎的堆分配或一些昂贵的东西),并且类中的方法应该能够自动使用此构造函数,而不是具有相同参数的其他公共构造函数。
【问题讨论】:
-
我不认为有私有构造函数这样的东西。您可以有一个从构造函数调用的私有方法。您也可以重载构造函数,但它们必须是公共的。
-
@Ben:好的。但这是错误的。您可以拥有私有构造函数。 liveworkspace.org/code/41BKrw$1
-
我认为官方的说法是 override 而不是 overload。我有时也会犯同样的错误。有些人可能会感到困惑......
-
@Ben,你可以有私有构造函数。一种用途是单身人士。只有朋友/静态成员可以创建。
-
@thang:什么的官方说法是覆盖?由于此功能不存在,因此没有官方说法。但如果它确实存在,我无法想象它为什么会被称为 override,因为该术语通常用于继承上下文中,子类功能替换基类功能。
标签: c++ class constructor overloading