私有构造函数的作用????

cstt60777 2007-09-19 04:56:40
如题 不明白
私有了 还怎么用???
...全文
6465 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
l1058665325 2012-10-05
  • 打赏
  • 举报
回复
哈哈,有我晚吗?
zf2371752658 2012-06-28
  • 打赏
  • 举报
回复
为什么要避免在外部new对象呢,在外部new对象有什么影响呢
akzhang 2012-05-30
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class A
{
public:
static A a;
void getId()
{
cout<<"id="<<id<<endl;
}

//静态成员函数返回类的一个对象
static A* createObject()
{
a.id=200;
return &a;
}

private:
int id;
//构造函数为私有
A(){}
A(int _id):id(_id){}
};
//初始化静态成员变量
A A::a;

int main(int argc, char *argv[])
{
//错误,构造函数私有
//A a(10);
//定义指针变量不需要调用构造函数
A * obj=A::createObject();
obj->getId();
return 0;
}
ningbupt 2011-05-08
  • 打赏
  • 举报
回复
呵呵呵
saygoodbyetoyou 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 txwd0033 的回复:]
呵呵,早起的鸟儿有虫吃
[/Quote]
早起的虫儿被鸟吃
海牛 2007-09-21
  • 打赏
  • 举报
回复
起的比鸡早??程序员嘛,本来就是"鸡"~~~嘿嘿^_^
clever_zhu_fei 2007-09-21
  • 打赏
  • 举报
回复
早起的鸟有虫吃
早起的虫被鸟吃
Miamiiii 2007-09-20
  • 打赏
  • 举报
回复
学习!
Ivony 2007-09-20
  • 打赏
  • 举报
回复
更正

1、去掉默认构造函数。因为一个类如果不写“任何”构造函数,那么系统就会自动为这个类加上一个默认构造函数,但有时候这个类根本不需要实例,就需要一个调用不了的构造函数来把默认构造函数给排除掉。
Ivony 2007-09-20
  • 打赏
  • 举报
回复
1、去掉默认构造函数。因为一个类如果不写默认构造函数,那么系统就会自动为这个类加上一个,但有时候这个类根本不需要实例,就需要一个调用不了的构造函数来把默认构造函数给排除掉。

2、避免被错误的构造。有时候一个类的实例构造不能简单地由构造函数来完成,或者构造函数在语法上并不合适,这个时候一般会提供静态的创建方法来创建实例,但类型的构造必须经由构造函数,所以可以提供一个私有的构造函数给静态创建方法调用。同时,Clone或类似的方法也属于此种情况。

3、仅为别的构造函数服务。这个就不必多说了,与私有方法一样。
wdzr_826 2007-09-20
  • 打赏
  • 举报
回复
又见到思归。

私有构造函数,好像没什么意义
virusswb 2007-09-20
  • 打赏
  • 举报
回复
就是不向外提供类的构造函数,但是提供静态的方法可以构造对象,有点工厂的雏形

lbq1221119 2007-09-20
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csspec/html/vclrfcsharpspec_10_10_5.asp
lbq1221119 2007-09-20
  • 打赏
  • 举报
回复
起的比鸡早啊
lbq1221119 2007-09-20
  • 打赏
  • 举报
回复
发表时间: 2007-9-19 4:56:40
MaybeHelios 2007-09-20
  • 打赏
  • 举报
回复
早起的虫被鸟吃!

只给自己用,对外提供一个其他的实例生成接口,在里面就可以根据自己的需要想怎么控制都行了。
shinaterry 2007-09-20
  • 打赏
  • 举报
回复
单例模式...
flexgo 2007-09-20
  • 打赏
  • 举报
回复
单例模式的应用
hel_ 2007-09-20
  • 打赏
  • 举报
回复
私有构造函数就是由于某种原因不让你new一个事例,不过一定有方法得到该实例
lnwuyaowei 2007-09-20
  • 打赏
  • 举报
回复
好长时间没有见过思归发贴了。
加载更多回复(13)

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧