C++关于默认构造函数和无参构造函数

本文介绍了C++中默认构造函数和无参构造函数的概念及其区别。当没有提供构造函数时,编译器会自动生成默认构造函数。然而,如果定义了带有参数的构造函数,编译器将不再提供默认构造函数,导致编译错误。为了解决这个问题,我们需要显式地定义一个无参构造函数,以便在需要实例化对象时不发生冲突。通过示例代码,展示了如何正确使用无参构造函数确保代码能正常编译和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++关于默认构造函数和无参构造函数

默认构造函数

在不提供任何构造函数的情况下,编译器给出一个不带参数的,不包含代码的构造函数。

#include<iostream>
using namespace std;

class A
{
public:
    int val;
};

int main(){
    A a;    //这里调用的是默认构造函数
    cout<<a.val<<endl;
    return 0;
}

当已经提供了显式的构造函数,例如:

#include<iostream>
using namespace std;

class A
{
public:
    int val;
    A(int n){
        val = n;
    }
};

int main(){
    A a;    //这里调用的是默认构造函数
    cout<<a.val<<endl;
    return 0;
}

此时编译就会出错,因为编译器认为已经提供了显式的构造函数就不会再提供默认构造函数了。这时需要添加一个无参构造函数,使得上述代码能够正确编译。

#include<iostream>
using namespace std;

class A
{
public:
    int val;
    A(){}
    A(int n){
        val = n;
    }
};

int main(){
    A a;    //这里调用的是无参构造函数
    cout<<a.val<<endl;
    return 0;
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值