C++中,默认构造函数、无参构造函数、带有默认值的构造函数,究竟怎么...
1、无参构造函数就是函数没有参数,说白了就是函数的括号里没有任何东东。比如A()带有默认值的构造函数是有参数的构造函数,不过如果你调用时不传入任何参数则使用默认值。
2、没有参数的构造函数就是默认构造函数。有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等。构造函数是在创建给定类型的对象时执行的类方法。
3、也没多大区别,有参的可以定义的时候传递参数,无参的可以定义变量为默认值,或者输入参数。两者都可以实现相同的功能,一般有参的方便一点,定义的时候就可以赋初值。也可以两个同时用,实现多态性。
4、构造函数的函数名称与类名同名,其他方法(函数)名称可以自定义。
5、只是构造函数是没有参数的,不用向函数传递数值或地址。
6、默认构造函数是在没有显式提供构造函数时,系统自动添加的无参构造函数;而当无参构造函数显式提供时,系统不会再自动添加,此时就不存在默认的构造函数。因此,这句话是对的。
默认构造函数的定义
默认构造函数,就是调用构造函数时,不必给出实参的构造函数。在一个类中定义了全部是默认参数的构造函数后,不能再定义重载构造函数。
默认构造函数是在没有显式提供构造函数时,系统自动添加的无参构造函数;而当无参构造函数显式提供时,系统不会再自动添加,此时就不存在默认的构造函数。因此,这句话是对的。
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数。此默认构造函数是不带参数的。
C++的默认构造函数
不带参数的构造函数称为“默认构造函数”。无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。
C++:不存在默认构造函数,是代码错误造成的,解决方法如下:首先在C语言中,对象复制时,只对对象中的数据成员进行简单的赋值,如下图所示。
struct结构体是从c到c++的一个过渡,struct结构体本质是C语言的东西,本身无所谓构造函数,当然就更没有默认的构造函数。当我们采用面向对象方法编程,写一个类的时候,其本身有一个默认的构造函数。
如Sales_data(const string &s=str),相当于提供了构造函数Sales_data()和Sales_data(const string &s=str)两个构造函数。