C++私有构造函数

本文摘自:http://hi.baidu.com/mythmgn/blog/item/d395180202f7cc0b4bfb51a6.html

类的构造函数一般是public的,但是也可以是private的。构造函数为私有的类有这样的特点:

<1>不能实例化:因为实例化时类外部无法访问其内部的私有的构造函数;

<2>不能继承:同<1>;

所以它可以控制用户实例化一个类对象。

实例化的这样的类的方法是在类中定义一个static方法或者一个友元,专门负责实例化工作。Java中的工厂方法常常采用这点。

下面给出一个例子:

#include "stdafx.h"
#include<iostream>
using namespace std;
class WonderfulClass
{
public:	
	static WonderfulClass* makeAnObject()
	{
		// 创建一个WonderfulClass对象并返回其指针
		return (new WonderfulClass);
	}
private:
	WonderfulClass(){cout<<"私有构造函数。"<<endl; }
	friend WonderfulClass* Visitconstuctor();
};
WonderfulClass* Visitconstuctor()
{
	return (new WonderfulClass);
}

int _tmain(int argc, _TCHAR* argv[])
{

	WonderfulClass *p = WonderfulClass::makeAnObject();
	// ... 使用*p
    delete p; // Not neccesary here, but it's a good habit.

	WonderfulClass *q = Visitconstuctor();
	delete q;

	cout<<endl;
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值