初始化列表的使用

#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;
}

posted @ 2015-11-07 18:28  cloudren2020  阅读(93)  评论(0编辑  收藏  举报