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 @ 2022-09-12 10:35  CodeMagicianT  阅读(42)  评论(0)    收藏  举报