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;
}
参考资料
参考资料来源于黑马程序员等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)