码迷,mamicode.com
首页 > 编程语言 > 详细

成员变量包含引用类型(c++常问问题七)

时间:2016-01-29 03:09:27      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

成员变量里面如果包含了引用类型,应该如何初始化此成员变量才不报错

答:需要利用类的初始化列表来构造该成员对象

 

class dog1
{
public:
	dog1(){m_strName = "peter";};
	string m_strName;
};

class cat1
{
public:

//这里用了两种方法来初始引用类型的成员变量,一种是new,一种是上层传入
//注意..如果构造函数直接构造对象并把对象付给成员,构造函数结束时成员指向的对象也被栈回收了,后果很严重,传入引用对象的话请注意好该对象的生命周期
	cat1(int& nCnt):m_friend(*(new dog1())),m_nfriendCnt(nCnt)
	{
		//...
	}

	dog1& m_friend;
	int &m_nfriendCnt;
};

void main()
{
	int nCnt = 1;
	cat1 c1(nCnt);
	cout<<c1.m_friend.m_strName.c_str();//成功输出"peter"
	cout<<c1.m_nfriendCnt;//成功输出1

	system("pause");
}   

 

这里用了两种方法初始引用类型的成员变量,一种是new(析构函数处记得释放..),一种是上层传入(注意该对象的生命周期)..
注意..如果构造函数直接构造对象并把对象付给成员,构造函数结束时成员指向的对象也被栈回收了,后果很严重,传入引用对象的话请注意好该对象的生命周期

 

成员变量包含引用类型(c++常问问题七)

标签:

原文地址:http://www.cnblogs.com/JensenCat/p/5167809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!