C++ 为什么有默认的构造函数又要自定义一个构造函数

如题所述

默认构造函数只会初始化这个类,并不做多余的动作
自定义构造函数,可以对类体内变量进行赋值,也可以调用其他函数,比如:
class ball{
private:
float radius;
public:
void ball(float r){
radius=r;
cout<<"当前球体半径为:"<<r<<endl;
}
}
当你定义一个ball的实体时可以这样:
ball b1(2.5);
这时,b1的radius直接初始化为2.5,并且会在屏幕上打印:当前球体半径为:2.5
这只是简单的构造函数应用,你可以把他的能力加以扩展
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-14
默认的构造函数 只会对你要初始化的变量 初始化为0 或者空值 这只是编译器保证每个变量在调用之前 都被初始化而已 而当你要初始化为你自定义的值时 就需要调用你自定义的构造函数
第2个回答  2011-11-15
内部数据类型的变量有初始值,但非内部数据类型的对象,比如自定义的类的对象,如果要初始化,就要自己定义一个构造函数。
构造函数提供了一种灵活机制,允许你自定义初始化工作。
第3个回答  2011-11-14
自定义是非必须的,
默认构造函数什么都不作
当默认构造函数不能满足你的需要才定义自定义构造函数的
比如额外申请内存等等,一切看你自己实际需要

C++提供了默认版本的构造函数和析构函数,为什么还需要用户自定义构造...
构造函数是用来初始化成员变量的,而析构函数用来用来释放空间的<若是成员变量有动态开辟空间的,需要直接自己写析构,否则内存泄露>

...有构造函数了,为什么还要添加一个默认的构造函数才可以运行,源程序...
所谓“默认构造函数”是在类似声明变量Point t2,t3;这样不带参数,而且没有调用默认参数的情况下被调用的,“默认构造函数”是不需要写在程序里的,所以说是默认的(其实就是开辟一段空间存储变量,其他的什么也不干。。。)上面那个程序里的Point(float a,float b)是程序员自定义的构造参数,旨在定义...

构造函数和默认构造函数有什么区别
1、构造函数的函数名称与类名同名,其他方法(函数)名称可以自定义。2、构造函数仅在对象被创建时系统会根据给定的参数以及类中的构造函数定义进行选择调用,如果类中没有定义构造函数,系统默认会提供一个无参构造空函数,什么都不会做,只是满足接口要求,构造函数不能被显式调用。其他函数根据程序员需...

您好,请问在c++里构造函数有什么用呢,为什么要添加构造函数呀?什么时 ...
顾名思义,构造函数就是在定义类对象的时候调用,如果你在类里面没有定义构造函数的话,系统会提供一个默认的构造函数,虽然它什么也不做。构造函数可以重载,每一个类的对象的建立时都会调用相应的构造函数。暂时就想到这么多了,其实随便一本C++入门教材里都有。

...基类不缺省构造时候派生类要调用基类构造函数进行初始化
首先,C++本身就规定创建子类对象的时,先调用基类的构造函数,然后再调用自己类的构造函数。当我们的基类没有自己定义构造函数时候(就是系统默认的构造函数)时。创建子类对象会先默认调用基类的默认构造函数。但是,当我们的基类自己定义了构造函数,(可能定义了很多个)此时不会再自动生产默认构造。但是...

c++编写一个类一定要加上构造函数吗?
这是因为你不写构造函数的话,其实 C++ 会自动的帮你加上一个构造函数,这个就是默认的构造函数。再贴一段百科的定义你就懂了:默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类...

C++中的Struct有没有默认的构造和析构函数?
Struct在C++中,实际上是一种特殊的类。它能够提供类所具备的全部特性。构造和析构函数就是其中的一部分。构造函数用于初始化对象,而析构函数则在对象的生命周期结束时负责清理资源。默认构造函数在类或结构体中不显式声明时,编译器会自动产生一个默认构造函数。对于类或结构体,该函数的参数数量与成员...

c++默认移动构造函数有什么用?
考虑默认移动构造函数的作用,我们首先分析在C++中,当未明确指定时,编译器会默认生成一个移动构造函数的情况。若一个类中存在右值引用类型作为参数的构造函数,且未提供自定义移动构造函数,则编译器会为该类生成默认移动构造函数。这一机制有助于提升程序性能,尤其是在进行大量对象移动操作时,相比于拷贝...

求助!C++中类的构造函数与创建动态对象的问题!
第一段代码 类a中你没有些构造函数,因此,编译器会替你自动添加一个默认的构造函数: a(void){},所以你在第一段的main函数中p = new a;时,实际上调用的是这个默认的构造函数a(void){},当然不需要参数。第二段代码你自己写了构造函数,编译器就不会替你添加默认的构造函数,所以在main...

C++构造函数和析构函数详解
4、如果我们没有定义构造函数,系统会为我们自动定义一个无参的默认构造函数的,它不对成员属性做任何操作,如果我们自己定义了构造函数,系统就不会为我们创建默认构造函数了。二、默认参数构造函数 CTime(){}带参数的构造函数:这样的一个构造函数提供了一个三个成员属性的初始化,声明对象的时候就可以...

相似回答