作者shishe (贾富贵)
站内C_Sharp
标题[问题]新手:关于默认构造函数的问题
时间Sun Jan 23 17:11:18 2011
书上说如果一个类没有定义任何构造函数,就会有一个默认的不带参数的构造函数。
我做了如下实验:
1、在一个类的定义中不写任何构造函数,然后在另一个类的main函数中用不带参数的构
造函数实例化这个类,证明可行。
2、在一个类的定义中写两个构造函数,分别是不带参数的构造函数和带2个参数的构造
函数,然后在另一个类的main函数中用这两种构造函数实例化这个类,可以得到两个对
象,证明可行。
3、在一个类的定义中仅写一个2个参数的构造函数: 构造函数(int x,int y),然后在另
一个类的main函数中用不带参数的构造函数实例化这个类,这时就不能成功,错误有两
种情况:将2个参数的构造函数不定义为public时,错误是说构造函数(int,int)受保护
,但按我的理解我实例化时是调用的默认的构造函数(就是我没写但系统自己存在的那个
默认的不带参数的构造函数),与构造函数(int,int)无关;将2个参数的构造函数定义为
public时,错误是说不存在0个参数的构造函数。
所以由以上实验是否可以得出:如果一个类只定义了一个带参数的构造函数,那么这个
类就不存在所谓的默认的不带参数的构造函数了?
两岸用语有不同,希望大家能理解。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.5.86.3
1F:→ james732:是的,只要自己有写constructor,就不会自动产生了 01/23 17:18
2F:→ shishe:谢谢一楼解惑,我发现书上写得不太清楚,怀疑是翻译者问题 01/23 17:28
3F:推 horngsh:不管是C++或C#反正只要你有自己定义Constructor,就一定要 01/23 20:24
4F:推 horngsh:顺便定义不带任何参数的Constructor。 01/23 20:24