C++创建A a;而程序员自定义的是带参数构造函数,那么是否会调用默认构造函数。
书上说,自定义构造函数会覆盖默认构造函数。但自定义的是带参数的构造函数。这个时候创建Aa;是否还会调用默认无参构造函数??...
书上说,自定义构造函数会覆盖默认构造函数。
但自定义的是带参数的构造函数。这个时候创建A a; 是否还会调用默认无参构造函数?? 展开
但自定义的是带参数的构造函数。这个时候创建A a; 是否还会调用默认无参构造函数?? 展开
4个回答
展开全部
自定义构造函数会覆盖默认构造函数,就是说定义了带参的构造函数后,编译器是不会创建默认构造函数的,这个时候你使用 A a;这样试图创建一个A类的对象,并调用无参的构造函数初始化是不正确的,因为类中没有无参的构造函数,这个时候编译器找不到匹配的构造函数,所以会报错哦……no appropriate default constructor available!
这个时候你有两种解决方法,
一:将你定义的构造函数设置成带默认形参的构造函数!
二:定义一个无参的构造函数!
这个时候你有两种解决方法,
一:将你定义的构造函数设置成带默认形参的构造函数!
二:定义一个无参的构造函数!
更多追问追答
追问
编译器会报错?不会吧,只是没有调用构造函数而已,这样就会报错????
追答
当然报错,没有构造函数编译器会提示no appropriate default constructor available!
展开全部
当程序员自定义的构造函数是带参数构造函数,编译器不会自动生成不带参数的构造函数,即创建A的对象时,对象必须有参数;此时创建A a,编译器会报错。
当程序员没有自定义构造函数时,编译器则会自动成成不带参数的构造函数,此时创建A a是合法的。
定义类时,一般要写上多个构造函数。
当程序员没有自定义构造函数时,编译器则会自动成成不带参数的构造函数,此时创建A a是合法的。
定义类时,一般要写上多个构造函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会了,只要你谢了构造函数,无论有没有参,系统都不会在使用默认的无参构造方法的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
会出错
除非你自己同时定义了无参构造
除非你自己同时定义了无参构造
追问
编译器会报错?不会吧,只是没有调用构造函数而已,这样就会报错????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询