类的构造函数必须是 public 的吗?为何定义成 private ,编译报错呢?

解决方案 »

  1.   

    共有的,私有的。
    你定义成private,在类的外面,就不能生成类的对象了。
    一般都会定义成public。
    定义成private的,可以再类的内部,生成对象,具体参考下设计模式的单例。
      

  2.   

    构造函数默认是 public 的吗?为何我不单独设计构造函数,是可以实例化的。
    这么说,构造函数默认是全局的,我的理解对吗?
      

  3.   

    c++规定:如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数(由C++编译器提供)。也就是说如果你没有定义构造函数,他会给你提供一个默认的,如果你定义了,这个默认的就不存在了至于这个构造函数是不是public的,想想应该是这样吧,不确定啊。这个默认的构造函数应该不是全局的吧,我也理解的不太明白。
      

  4.   

    刚查的:
    编译器不就是生成可执行代码的嘛。需要时就生成一段用来构造的代码,如果不需要就是你自己写的代码也会被优化掉,编译器更不会画蛇添足给你硬要加一段代码。
    理解那段话,重点在c++有提供默认构造函数的机制,但这个机制启动的前提是,你自己没有提供任何构造函数。但启动了这个机制,是不是生成代码,还要看具体情况下是否需要。
    这样看的话:应该是会在类的内部总动生成一段代码,就是默认的构造函数,应该是public的吧。
      

  5.   

    class A{
    private:
       A();
    public:
    static A* GetA(){return new A}   
    }这样定义的私有构造函数,使用静态函数就可以得到一个类对象。我是这样理解的。不正确请指正。
      

  6.   

    public 否则 无法实例化
      

  7.   

    不必是public,
    private 的构造函数不能使用以下的定义
    假设A的构造是私有的,
    定义 A a;或者 A*a = new A都是错的。因为A()为私有函数,外部不能直接操作。一般方法是另外再定义一个public的函数自动调用A()