如题 不明白 
私有了 还怎么用???

解决方案 »

  1.   

    这样的类,往往提供一些静态的函数来生成该类的实例,只要这个类有公开的属性、方法,得到实例引用的一方还是可以调用的,一个例子是singleton。或者这个类只提供静态方法,而不提供任何实例方法,就可以把构造器设成私有,以避免生成实例。但在2.0中,一般是将类设成静态的:static class A
      

  2.   

    public class A
    {
       private A()
       {
       ...
       }   public static int A_Func()
       {
         ...
       }
    }外面调用只能调用A的静态函数A_Func,而不能A a = new A();私有构造函数只能在函数内部调用,外部不能实例化,所以私有构造函数可以防止该类在外部被实例化
      

  3.   

    我这里一般是用于工具类例如字符串的验证啊,枚举类型的转换这些东西,通常只做成静态接口被外部调用就可以了
    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;
           }
    }用法其实很多,主要目的就是避免外部构造此类,至于其他情况下怎么使用就看自己判断了
      

  4.   

    比如只能通过工厂模式创建对象,而不能用new的方式自己调用构造函数创建对象
      

  5.   

    saucer(思归) ( ) 信誉:403  2007-9-19 6:59:00  得分: 0  
     
     
       
    这样的类,往往提供一些静态的函数来生成该类的实例,只要这个类有公开的属性、方法,得到实例引用的一方还是可以调用的,一个例子是singleton。或者这个类只提供静态方法,而不提供任何实例方法,就可以把构造器设成私有,以避免生成实例。但在2.0中,一般是将类设成静态的:static class A
    。  
     
    ------------------------------------正解
      

  6.   

    singleton就是单键模式说白了就是一个类只允许一次实例化,自己慢慢体会了,到用到的时候才知道有用
      

  7.   

    e.g.:private foo()
    {
        // stuff
    }public static foo GetInstance()
    {
        if (m_Instance == null)
            m_Instance = new foo();
        
        return m_Instance;
    }private static foo m_Instance = null;
      

  8.   

    sorry, 没注意到 zhuqueta0101 的回复重复了
      

  9.   

    1、去掉默认构造函数。因为一个类如果不写默认构造函数,那么系统就会自动为这个类加上一个,但有时候这个类根本不需要实例,就需要一个调用不了的构造函数来把默认构造函数给排除掉。2、避免被错误的构造。有时候一个类的实例构造不能简单地由构造函数来完成,或者构造函数在语法上并不合适,这个时候一般会提供静态的创建方法来创建实例,但类型的构造必须经由构造函数,所以可以提供一个私有的构造函数给静态创建方法调用。同时,Clone或类似的方法也属于此种情况。3、仅为别的构造函数服务。这个就不必多说了,与私有方法一样。
      

  10.   

    私有构造函数就是由于某种原因不让你new一个事例,不过一定有方法得到该实例
      

  11.   

    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csspec/html/vclrfcsharpspec_10_10_5.asp
      

  12.   

    #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;
    }
      

  13.   

    为什么要避免在外部new对象呢,在外部new对象有什么影响呢