类中,只要有自定义的构造函数,是不是默认的那个无参构造函数就一定失效了?

sshziliao6 2015-04-02 09:09:05
① 如果定义了一个有参数的构造函数,无参数的默认构造函数会失效,要想继续使用无参数的构造函数,必须使用重载重新定义一个无参数的构造函数?
② 即使在类中自定义了一个无参数的构造函数,原先的那个系统默认的无参构造函数也会失效?

综合成一句话:
类中,只要有自定义的构造函数,无论是有参数的自定义构造函数还是无参数的自定义构造函数,默认的那个无参构造函数就一定失效了?
...全文
2825 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuxiaoyi123 2018-10-16
  • 打赏
  • 举报
回复
不是失效了,如果你自定义了构造函数,那么编译器就不自动创建构造函数了。但你也可以同时自己定义无参构造函数
  • 打赏
  • 举报
回复
”原先的那个系统默认的无参构造函数“这其实是你的幻想出来的,根本不是这种机制。
  • 打赏
  • 举报
回复
如果你没有写任何构造函数,c# 编译器帮你产生一个无参构造函数。这个是编译器的好心好意。
qq_35236160 2018-10-13
  • 打赏
  • 举报
回复
引用 6 楼 AAA123524457 的回复:
[quote=引用 1 楼 starfd 的回复:] 应该是这么说 如果一个类,你没有定义构造函数,那么系统默认会有一个无参的构造函数 但如果你定义了一个有参的构造函数,为了保证正确性,系统不会创建无参构造函数,这时候,如果你还想允许无参构造,就必须显式的声明一个
说的对。 其实如果你想在用有参构造函数的同时又能够用无参的构造函数,你可以显示的声明一个无参的构造函数和一个有参的构造函数。 (理论上可以声明不同参数或者参数类型不同的构造函数) eg: class A { public A(){}// 无参构造函数 public A(int a){} // 带一个参数的构造函数 public A(int a, double b){} // 带两个参数的构造函数 } 然后你可以这样去使用 class B { A tempA = new A(); A tempA1 = new A(1); A tempA2 = new A(1,2.0); } 这样就可以得到类A的三个不同参数的对象了! [/quote] 按我的说法就是,在测试类中如果new了一个无参对象,实体类对象可以不写对应的构造(public 类名)方法(系统会帮你创建);但是当一旦new了一个有参对象时,那么你new的无参对象必须要写(public 类名())这样一个无参的的方法来对应。
software_artisan 2015-04-09
  • 打赏
  • 举报
回复
构造函数也是可以重载的。。。。你实例化的时候用什么参数,就用构造器就调用哪个构造函数。
bbjiabcd 2015-04-08
  • 打赏
  • 举报
回复
是的,只要你定义了一个或多个构造函数(不管是有参的的还是无参的),默认的就没了
江南小鱼 2015-04-04
  • 打赏
  • 举报
回复
C#的实例化类的语法是使用new运算符,为防止错误,如果没写构造函数,编译器会自动创建一个 如果写了构造函数,默认的就不再自动创建
啊拉丁的鱼 2015-04-03
  • 打赏
  • 举报
回复
(理论上可以声明N多个不同参数或者参数类型不同的构造函数)
啊拉丁的鱼 2015-04-03
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
应该是这么说 如果一个类,你没有定义构造函数,那么系统默认会有一个无参的构造函数 但如果你定义了一个有参的构造函数,为了保证正确性,系统不会创建无参构造函数,这时候,如果你还想允许无参构造,就必须显式的声明一个
说的对。 其实如果你想在用有参构造函数的同时又能够用无参的构造函数,你可以显示的声明一个无参的构造函数和一个有参的构造函数。 (理论上可以声明不同参数或者参数类型不同的构造函数) eg: class A { public A(){}// 无参构造函数 public A(int a){} // 带一个参数的构造函数 public A(int a, double b){} // 带两个参数的构造函数 } 然后你可以这样去使用 class B { A tempA = new A(); A tempA1 = new A(1); A tempA2 = new A(1,2.0); } 这样就可以得到类A的三个不同参数的对象了!
john_QQ:2335298917 2015-04-03
  • 打赏
  • 举报
回复
是的,是这样的,默认构造函数在你定义了自己的构造函数以后就没有了
zujinsheng 2015-04-03
  • 打赏
  • 举报
回复
对的, 只要你声明了构造函数, 就不会再给你生成默认的构造函数了,并不是无效, 而是没有。
exception92 2015-04-03
  • 打赏
  • 举报
回复
不是,这给你怎么样实例化类有关。自定的构造函数 可以理解成方法的重写,也就是参数名称相同,参数类型,数量不同而已。 A a = new A(); 与 int i = 10; A a = new A(i); 这肯定是不一样的。
tcmakebest 2015-04-02
  • 打赏
  • 举报
回复
就是身在福中不知福, 当你忘记写构造函数的时候, 编译器帮你生成了一个,仅此而已
  • 打赏
  • 举报
回复
应该是这么说 如果一个类,你没有定义构造函数,那么系统默认会有一个无参的构造函数 但如果你定义了一个有参的构造函数,为了保证正确性,系统不会创建无参构造函数,这时候,如果你还想允许无参构造,就必须显式的声明一个

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧