构造函数与析构函数调用技巧
1、构造函数含义:成员函数名与包含它的类的类名一致,此成员函数称构造函数
class Test { public: Test() //无参数 构造函数 { } ~Test() //析构函数 { cout<<"我是析构函数,被调用了" <<endl; } protected: private: int a ; };构造函数与析构函数的形式
class Test4 { public: Test4() //无参数构造函数 { m_a = 0; m_b = 0; } Test4(int a) { m_a = a; m_b = 0; } Test4(int a, int b) //有参数构造函数 //3种方法 { m_a = a; m_b = b; } //赋值构造函数 (copy构造函数) // Test4(const Test4& obj ) { m_b = obj.m_b + 100; m_a = obj.m_a + 100; } public: void printT() { cout<<"普通成员函数"<<endl; cout<<"m_a"<" m_b"< endl; } private: int m_a; int m_b; }; //1 赋值构造函数 用1个对象去初始化另外一个对象 void main() { Test4 t3;//什么都不写默认调用无参构造函数 不能写成 Test t3(); Test4 t1(1, 2); Test4 t0(8, 9);//调用两个参数构造函数 c++编译器自动的调用构造函数 //下面这两个会调用含一个参数构造函数 Test4 t7 = (3, 4, 5, 6, 7); // = c+对等号符 功能增强 c++编译器自动的调用构造函数 Test4 t8 = 5; //这两个都会调用赋值构造函数 Test4 t2 = t1; //用t1来初始化 t2 ,会调用赋值构造函数。t1明显就是obj,然后t2的成员变量就可以用t1的成员变量来控制,类似t2为数学上的的因变量,t1为自变量,t2=f(t1) Test2 t5 (t1);//调用匿名对象 //下面这两个不会调用赋值构造函数 Test4 t4 = Test4(1,4); // t4对象的初始化。如 参数构造函数里面有与t4名称相同的成员变量赋值操作,则后者(t4)与前者的相同变量值也会相等。 t0 = t1; //用t1 给 t0赋值操作(是共同的成员变量赋值) 。和初始化是两个不同的概念 t2.printT();//结果为 m_a=101 m_b=102 这是t2成员变量新的私有值 t4.printT();//结果为 m_a=1 m_b=4 这是t4成员变量新的私有值 t0.printT();//结果为 m_a=1 m_b=2 这是t0成员变量新的私有值 t5.printT();//结果为 m_a=101 m_b=102 这是t5成员变量新的私有值 t7.printT();//结果为 m_a=7 m_b=0 这是t7成员变量新的私有值 t8.printT();//结果为 m_a=5 m_b=0 这是t8成员变量新的私有值 return ; }