本文共 932 字,大约阅读时间需要 3 分钟。
设计构造函数和析构函数的原因:
在说这个原因之前,先说一下普通方案的初始化的原理,在普通方案中,先创建一个对象,然后这个对象去调用一个普通函数init()去进行初始化工作。这种普通方案存在两个缺点,第一个是每次创建一个对象,都需要显示的去调用一个函数去进行初始化,麻烦,如果由于失误,而忘记去调用这个初始化的函数,这个时候可能就会出现致命性的错误,因为没有初始化的对象真的很危险。第二,其不能解决所有的问题,比如,Test a[1021]={t1,t2..,,}这么多对象,难道要一个个的依次去显示的调用这个普通init函数么。而如果用构造函数,则完全没有这些问题,把所有的初始化和结束工作分别放在构造函数和析构函数中,就可以解决这些问题。具体的看如下代码:
#includeusing namespace std;class Test3{public: void init(int _a, int _b) { a = _a; b = _b; }protected:private: int a; int b;};void main31(){ //类没有提供构造函数,c++编译器会自动给你提供一个默认的构造函数 //类没有提供构造函数 copy构造构造函数, c++编译器会自动给程序员提供一个 默认的copy构造函数 = Test3 t1; int a = 10; int b = 20; t1.init(a, b); Test3 tArray[3]; tArray[0].init(1, 2); tArray[1].init(1, 2); tArray[2].init(1, 2); // Test3 t21; t21.init(1, 2); Test3 t22; t22.init(1, 2); Test3 t23; t23.init(1, 2); //在这种场景之下 显示的初始化方案 显得很蹩脚 Test3 tArray2[3] = {t21, t22, t23}; //在这种场景之下,满足不了,编程需要 Test3 tArray3[1999] = {t21, t22, t23}; cout<<"hello..."<
转载地址:http://phzmi.baihongyu.com/