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;
}
参考资料
参考资料来源于黑马程序员等