类的构造函数必须是 public 的吗?为何定义成 private ,编译报错呢? 类的构造函数必须是 public 的吗?为何定义成 private ,编译报错呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 共有的,私有的。你定义成private,在类的外面,就不能生成类的对象了。一般都会定义成public。定义成private的,可以再类的内部,生成对象,具体参考下设计模式的单例。 构造函数默认是 public 的吗?为何我不单独设计构造函数,是可以实例化的。这么说,构造函数默认是全局的,我的理解对吗? c++规定:如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数(由C++编译器提供)。也就是说如果你没有定义构造函数,他会给你提供一个默认的,如果你定义了,这个默认的就不存在了至于这个构造函数是不是public的,想想应该是这样吧,不确定啊。这个默认的构造函数应该不是全局的吧,我也理解的不太明白。 刚查的:编译器不就是生成可执行代码的嘛。需要时就生成一段用来构造的代码,如果不需要就是你自己写的代码也会被优化掉,编译器更不会画蛇添足给你硬要加一段代码。理解那段话,重点在c++有提供默认构造函数的机制,但这个机制启动的前提是,你自己没有提供任何构造函数。但启动了这个机制,是不是生成代码,还要看具体情况下是否需要。这样看的话:应该是会在类的内部总动生成一段代码,就是默认的构造函数,应该是public的吧。 class A{private: A();public:static A* GetA(){return new A} }这样定义的私有构造函数,使用静态函数就可以得到一个类对象。我是这样理解的。不正确请指正。 public 否则 无法实例化 不必是public,private 的构造函数不能使用以下的定义假设A的构造是私有的,定义 A a;或者 A*a = new A都是错的。因为A()为私有函数,外部不能直接操作。一般方法是另外再定义一个public的函数自动调用A() 新手求解答 没心情写程序了,一个做外贸朋友一个月挣2-3万,悲伤 仅有的10分,请教:如何将EXCEL中的数据导入到Sql Server中???? release下调试出现的问题! 子类化的问题 sql server问题,在线等 位图保存? 请问图标为什么不能在桌面和文件夹里同时显示? 请问代码的意思! 安装了2000后怎么再安装98啊? thank 100分求解析得到web services返回的数组~ 数字签名做好了,却验证失败,求方法
你定义成private,在类的外面,就不能生成类的对象了。
一般都会定义成public。
定义成private的,可以再类的内部,生成对象,具体参考下设计模式的单例。
这么说,构造函数默认是全局的,我的理解对吗?
编译器不就是生成可执行代码的嘛。需要时就生成一段用来构造的代码,如果不需要就是你自己写的代码也会被优化掉,编译器更不会画蛇添足给你硬要加一段代码。
理解那段话,重点在c++有提供默认构造函数的机制,但这个机制启动的前提是,你自己没有提供任何构造函数。但启动了这个机制,是不是生成代码,还要看具体情况下是否需要。
这样看的话:应该是会在类的内部总动生成一段代码,就是默认的构造函数,应该是public的吧。
private:
A();
public:
static A* GetA(){return new A}
}这样定义的私有构造函数,使用静态函数就可以得到一个类对象。我是这样理解的。不正确请指正。
private 的构造函数不能使用以下的定义
假设A的构造是私有的,
定义 A a;或者 A*a = new A都是错的。因为A()为私有函数,外部不能直接操作。一般方法是另外再定义一个public的函数自动调用A()