在C++中构造函数的有参和无参的区别

如题所述

也没多大区别,有参的可以定义的时候传递参数,无参的可以定义变量为默认值,或者输入参数。两者都可以实现相同的功能,一般有参的方便一点,定义的时候就可以赋初值。也可以两个同时用,实现多态性。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-20
都在对象被构造的时候被调用,只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,有参数时调用对应的有参构造方法。构造函数的参数一般用来初始化类的数据成员。
构造函数的特点及作用:
1、构造函数的命名必须和类名完全相同。
2、构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。
3、构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。
4、当定义一个类定义的时候,通常情况下都会默认一个构造函数,此默认构造函数是不带参数的。当自定义了含参构造函数时,默认构造函数将需要手动书写出来。
第2个回答  2011-03-20
比如
class A
{
public:
int attrib;
A() {attrib = 0; cout<<"无参"<<endl; } //无参构造函数
A(int a) {attrib = a; cout<<"含参"<<endl;} //有参构造函数
};

int main()
{
A aa(3);//这样申明一个A类变量aa,调用带参数的构造函数,得到 aa.attrib = 3;
cout << aa.attrib<<endl;
A bb;//这样申明一个A类变量bb,调用不带参数的构造函数,得到bb.attrib = 0;
cout<< bb.attrib << endl;
return 0;
}
第3个回答  2011-03-19
这可是一个字一个敲的啊……
在定义类时不能对成员变量进行初始化,因为此时无法确定成员变量属于哪一个对象,成员变量一般都定义为私有属性,也不能在声明对象后利用赋值运算对成员变量进行初始化。成员变量的初始化一般是利用一个名为构造函数的成员函数来完成。
构造函数是一种特殊的成员函数,它提供了对成员变量进行初始化的方法,使得在声明对象时能自动地初始化对象。因为当程序创建一个对象时,系统会自动调用该对象所属类的构造函数。
像一般函数一样,构造函数也可以重载,即可以为一个类定义多个不同的构造函数,通过函数参数不同来区别不同的构造函数,在声明对象时其后括号中的参数形式决定了调用类的哪一个构造函数。

参考资料:《Visual C++ 面向对象编程教程》

本回答被网友采纳

在C++中构造函数的有参和无参的区别
也没多大区别,有参的可以定义的时候传递参数,无参的可以定义变量为默认值,或者输入参数。两者都可以实现相同的功能,一般有参的方便一点,定义的时候就可以赋初值。也可以两个同时用,实现多态性。

构造函数的有参和无参的区别,构造函数的参数是派什么用场的?
区别:1.如果在创建对象时不写参数,调用的就是无参的构造方法。可是如果你写的有有参的构造方法,而没有无参的构造方法,那么再“创建对象时不写参数”就会报错,程序会认为你知道该怎么做。如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。2.没有参数的构造函数...

c++中缺省构造函数与无参构造函数有什么区别?
在C++中,缺省构造函数与无参构造函数虽在调用方式上相同,均以类名加括号的形式,无需额外参数。然而,它们之间存在本质区别。无参构造函数一定是缺省构造函数,这意味着它在未提供任何参数时被调用,无需显式声明。反之,若构造函数具有默认值的参数,它虽在无需提供参数时也能被调用,但本质并非缺省...

分析类的默认构造函数与带参数的构造函数分别在什么情况下被调用,并且...
C++中发明了一种函数重载技术,也就是允许多个函数名相同,但是参数的个数或者类型不一样。C++类的构造函数是允许重载的,带参数的构造函数和不带参数的构造函数满足了函数重载的需求。但是在一个类产生一个对象的时候,只会选做其中一个构造函数。

c++什么叫构造函数,它的作用是什么
c++类的构造函数详解 一、 构造函数是干什么的class Counter{public: \/\/ 类Counter的构造函数 \/\/ 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: \/\/ 数据成员 int m_value;} 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作...

c++默认构造函数的形参列表中没有形参这句话错在哪里?
默认构造函数有:不带任何参数的构造函数;带有参数,但是所有的参数都有默认值。默认构造函数就是不用传递任何参数就可以调用的构造函数,复制构造函数和移动构造函数不属于默认构造函数。例如:class T { public:T( int data = 0 ); \/\/带有一个参数,但是参数有默认值,所以是默认构造函数。};...

为什么要构造无参构造函数
c++中无参构造函数的作用:该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作。故:构造函数的作用:初始化对象的数据成员。举例:class Counter { public:\/\/ 类Counter的构造函数 \/\/ 特点:以类名作为函数名,无返回类型 Counter(){ m_value = 0;...

c++为什么一定要定义无参构造函数?是用来做什么的?
可以不用定义啊。只要有一个构造函数就可以,甚至构造函数都可以是私有的。类定义必须要提供构造函数,作用是对类初始化,这个是构造函数的作用,建议好好理解一下。单例模式中,构造函数是私有的,代码如下:class CSingleton { private:CSingleton() \/\/构造函数是私有的 { } static CSingleton *m...

C++构造函数和析构函数详解
1、构造函数是一种特殊的成员函数,不需要用户来调用,定义对象时被自动执行。2、构造函数名字与类名相同,无返回类型。3、可以由用户自己定义实现,根据需要设计对数据成员进行初始化,依旧可以设置函数的默认参数。4、如果我们没有定义构造函数,系统会为我们自动定义一个无参的默认构造函数的,它不对...

理解\/总结C++中的构造函数和析构函数
在C++中,构造函数和析构函数扮演着至关重要的角色。它们分别负责对象的初始化和清理工作,这些操作是编译器强制要求的,即使不显式定义,编译器也会提供默认的空实现。构造函数用于在创建对象时为成员属性赋值,无返回值,函数名与类名相同,并支持重载,确保仅在创建对象时调用一次。析构函数则在对象...

相似回答