C++构造函数之默认构造函数

参考博客:https://blog.csdn.net/china_jeffery/article/details/79288103#commentBox

以下内容是在上述博主的博客中提炼出来的:

一、默认构造函数的含义是啥:

主要就是:默认构造函数在调用的时候不需要显示传入实参的构造函数

 二、默认的构造函数的分类

1、无参构造函数:就是没有参数的构造函数

class Sample {
public:
    // 默认构造函数。
    Sample() //同时也是无参构造函数,就是没有任何参数的构造函数
    {
        // do something
    }
};

2、带有形参,并且带有默认值的构造函数

class Sample {
public:
    // 默认构造函数,会有默认值,当调用的时候没有实参传入的时候,就会默认调用该形参默认值
    Sample(int m = 10)
    {
        // do something
    }
};

三、默认构造参数在什么时候被调用

1、被调用的情况:就是被编译器需要的时候,才会生成默认构造函数(待考证)

2、具体需要的情况:

(1)当该类的类对象数据成员有默认构造函数时。//待考证

(2)当该类的基类有默认构造函数时。

(3)当该类的基类为虚基类时。

(4)当该类有虚函数时。//待考证

四、默认构造函数又名缺省构造函数

 注意,这个名字真的真的是我第一次才知道,之前被几个构造函数弄晕了,这个概念又更新了我对C++新的认识

1、默认构造函数又名缺省构造函数,只能使用一个,也就是说在一个类中只能出现一个无参构造函数或者只能出现一个带有形参带有默认值的构造函数

上代码解释:

#include <iostream>
#include <stdio.h>

using namespace std;

class Sample {
public:
    // 默认构造函数
    Sample() {
        // do something
        printf("Sample()");
    }

    // 默认构造函数
    Sample(int m = 10) {
        // do something
        printf("Sample(int m = 10)");
    }
};


int main()
{
    Sample s; // error C2668: “Sample::Sample”: 对重载函数的调用不明确

    return 0;
}

五、使用默认构造函数的时候创建对象不能后面带有括号

#include<iostream>
#include <stdio.h>

class Sample {
public:
    // 默认构造函数
    Sample() {
        // do something
        printf("Sample()");
    }
};

int main()
{
    Sample s; 
    while (1);
    return 0;
}

我使用的是vs编译器,如果将s变成s()的时候会发现,不会打印出来东西,只有将更改为s的时候才有结果

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值