2014-03-29 35 views
0

在C++的专用部分声明构造函数有什么用? 我们可以在private部分声明好友函数和构造函数,但有什么用?专用部分的构造函数

+0

一种情况是禁用在堆栈上创建的对象。 – billz

回答

0

如果你声明构造函数为private,除了类本身之外,没有人可以创建它的新实例。最有可能的是,有一个静态方法返回一个类实例。这赋予了对给定程序中存在的实例数量的一些控制。

singleton pattern是这种做法的一个应用。通过使用私有构造函数和其他一些技巧,可以确保只存在该类的单个实例,因为用户不能自己创建一个new实例。

0

有许多私有构造函数的情况。

例如:

  • 限制对象创建
  • 对于单模式
  • 限制某些类型构造(例如复制构造,默认的构造)

私有构造意味着用户不能直接实例化一个类。相反,您可以创建对象,并在其中创建可以创建和返回类实例的静态类函数。

另一个用途是prevent inheritance of your class,因为派生类将无法访问您的类的构造函数。当然,在这种情况下,你仍然需要一个创建类的实例的函数。

此外,它通常用于通过静态成员函数访问对象的单例模式,否则每个人都可以创建类的实例,因此它不再是单例。对于一个单例,根据定义,只能存在一个实例。

0

E.g.通过将构造函数设为私有,您可以控制对象的构造。也许你希望只有n个对象实例同时存在。您可以创建一个计算此功能的函数。另请参见单例模式