如题 不明白
私有了 还怎么用???
私有了 还怎么用???
解决方案 »
- 高分求Extjs中如何动态控制textfield的可编辑性质
- VS中的GDI+
- visual studio 2008 中的winform 如何向oracle中实行数据的插入 删除 更新 操作
- 求正则!!
- 用户控件在宿主页面的page_load中加载问题(有关生命周期的问题)
- 在.net板块再开一贴 求救 存储过程出错了 不吝分求解啊
- 有趣的面向对象的问题?显示a、b、c哪个呢?
- 如何使用C#获取需要通过身份验证的网页内容,帐号和密码已知
- OData (WCF数据服务) 如何实现多表查询
- 在win7下出现System.ArgumentException: 参数无效
- c# 怎样控制picture里面的gif动画
- 如何获得二维数组第二维的长度?
。
{
private A()
{
...
} public static int A_Func()
{
...
}
}外面调用只能调用A的静态函数A_Func,而不能A a = new A();私有构造函数只能在函数内部调用,外部不能实例化,所以私有构造函数可以防止该类在外部被实例化
public class A
{
private A(){}
public static bool validateString(string str){};
}那么外部使用的时候,只需要A.validateString(string)就能使用了外部无需构造A类,为了避免外部构造A类,A a = new A()这种情况出现,使用私有构造函数就可以。还有在空实体我也用到过私有构造函数,总之目的就是避免外面new这个类,导致一些不可预料的结果。而在单实体模式中,我也可以用到私有构造函数
public class A
{
private A(){}
private static A m_a;
public static A Instance
{
get
{
if(m_a==null)
{
m_a=new A();//自己内部new
}
return m_A;
}
}用法其实很多,主要目的就是避免外部构造此类,至于其他情况下怎么使用就看自己判断了
这样的类,往往提供一些静态的函数来生成该类的实例,只要这个类有公开的属性、方法,得到实例引用的一方还是可以调用的,一个例子是singleton。或者这个类只提供静态方法,而不提供任何实例方法,就可以把构造器设成私有,以避免生成实例。但在2.0中,一般是将类设成静态的:static class A
。
------------------------------------正解
{
// stuff
}public static foo GetInstance()
{
if (m_Instance == null)
m_Instance = new foo();
return m_Instance;
}private static foo m_Instance = null;
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;
}