10.默认的拷贝构造和析构函数

  当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数。为类定义了构造函数后,程序员就必须为它提供默认构造函数。如果提供了非默认构造函数(如Stock(const char *co, int n, double pr)),但没有提供默认构造函数,但没有提供默认构造函数,则下面的声明将出错:

Stock stock1;

  这样做的原因坑能是想禁止创建未初始化的对象。然而,如果要创建未初始化的对象,而不显式地初始化,则必须定义一个不接受任何参数的默认构造函数。定义默认构造函数的方式有两种。一种是给已有构造函数的所有参数提供默认值:

Stock(const string & co = "Error", int n = 0, double pr = 0.0);

  另一种方式是通过函数重载来定义另一个构造函数------一个没有参数的构造函数:

Stock();
//2022年9月8日09:02:40
#include <iostream>
using namespace std;

class Maker
{
private:
    int a;

public:
    Maker()//默认的构造函数,函数体是空的
    {

    }
    ~Maker()//默认的析构函数,函数体也是空的 
    {

    }
    void printfMaker()
    {
        a = 100;
        cout << "a = " << a << endl;
    }
};

void test01()
{
    Maker m;
    m.printfMaker();
}

int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}

参考资料

参考资料来源于黑马程序员等

posted @   CodeMagicianT  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示