#include<iostream>
using namespace std;
/*甚时候必须must使用初始化列表
1.初始化const数据成员
2.初始化引用数据成员
3.初始化对象
4.初始化父类成员变量
*/
class Test{
const int m_data;//特殊的成员变量
int &ra;
int m_num;
public:
Test(int a=0):m_data(0),ra(a)//ra里的必须是变量
{//无返回类型;函数名与类名一样
cout<<"Test()"<<endl;
}
//用形参i的值初始化成员变量m_data;多个成员变量,逗号隔开
Test(int i,int k):m_data(i),m_num(k),ra(k)
{//无返回类型;函数名与类名一样
//m_data=i;赋值
cout<<"Test()"<<endl;
cout<<"m_data="<<m_data<<endl;
cout<<"m_num="<<m_num<<endl;
}
~Test()
{
cout<<"m_data="<<m_data<<endl;
cout<<"ra ="<<ra<<endl;
cout<<"~Test()"<<endl;
}
};
int main(int argc,char**argv)
{
Test t1;//创建函数的时候自动调用构造函数
Test t2(1,2);
return 0;//t1在此回收
}
//test2
#include<iostream>
using namespace std;
class Father
{
int m_data;
public:
Father(int data=3):m_data(data){}
~Father(){}
void show(int n)
{
cout<<m_data<<" n="<<n<<endl;
}
};
class Son:public Father
{
public:
Son(int data=2):Father(data){cout<<"Son()"<<endl;}//父类成员变量,使用初始化列表
~Son(){cout<<"~Son()"<<endl;}
};
int main(int argc,char**argv)
{
Son s1(4);
s1.show(12);
return 0;
}