C++创建A a;而程序员自定义的是带参数构造函数,那么是否会调用默认构造函数。

2024-11-25 10:37:37
推荐回答(4个)
回答1:

自定义构造函数会覆盖默认构造函数,就是说定义了带参的构造函数后,编译器是不会创建默认构造函数的,这个时候你使用 A a;这样试图创建一个A类的对象,并调用无参的构造函数初始化是不正确的,因为类中没有无参的构造函数,这个时候编译器找不到匹配的构造函数,所以会报错哦……no appropriate default constructor available!
这个时候你有两种解决方法,
一:将你定义的构造函数设置成带默认形参的构造函数!
二:定义一个无参的构造函数!

回答2:

  当程序员自定义的构造函数是带参数构造函数,编译器不会自动生成不带参数的构造函数,即创建A的对象时,对象必须有参数;此时创建A a,编译器会报错。
  当程序员没有自定义构造函数时,编译器则会自动成成不带参数的构造函数,此时创建A a是合法的。
  定义类时,一般要写上多个构造函数。

回答3:

不会了,只要你谢了构造函数,无论有没有参,系统都不会在使用默认的无参构造方法的

回答4:

会出错
除非你自己同时定义了无参构造