【无标题】

#include<iostream>
using namespace std;

class Girl
{
private:
	string m_boys[3];
public:
	string m_name;

	//默认构造函数
	Girl()
	{
		m_boys[0] = "字都";
		m_boys[1] = "磐安";
		m_boys[2] = "宋雨";
	}

	//显示全部男朋友的姓名
	void showboyfriend()
	{
		cout << m_boys[0] << "," << m_boys[1] << "," << m_boys[2] << endl;
	}
	
	string& boys(int ii)//函数的返回值是引用,这时可以把函数调用的表达式当成变量来使用。
	{
		return m_boys[ii];
	}
};


int main()
{
	Girl g;
	g.boys(0) = "wowo";  //把函数调用的表达式当成变量来使用。
	cout << "第一任男朋友:" << g.boys(0) << endl;
	g.showboyfriend();
}

更好的方式是重载下标运算符

重载下标运算符的第一种语法:

返回值类型 &perator[ ](参数);

这种方式,[ ]不仅可以访问数组元素,还可以修改数组元素。

#include<iostream>
using namespace std;

class Girl
{
private:
	string m_boys[3];
public:
	string m_name;

	//默认构造函数
	Girl()
	{
		m_boys[0] = "字都";
		m_boys[1] = "磐安";
		m_boys[2] = "宋雨";
	}

	//显示全部男朋友的姓名
	void showboyfriend()
	{
		cout << m_boys[0] << "," << m_boys[1] << "," << m_boys[2] << endl;
	}
	
	string&operator[](int ii)//函数的返回值是引用,这时可以把函数调用的表达式当成变量来使用。
	{
		return m_boys[ii];
	}
};


int main()
{
	Girl g;
	g[0] = "wowo";  //把函数调用的表达式当成变量来使用。
	cout << "第一任男朋友:" << g[0] << endl;
	g.showboyfriend();
}

第二种:

const 返回值类型 &operator[ ](参数) const;

这种声明方式,[ ]只能访问而不能修改数组元素。

在实际开发中,我们应该同时提供以上两种形式,这样做是为了适应const对象,因为通过const对象只能调用const成员函数,如果不提供第二种形式,那么将无法访问const对象的任何数组元素。

#include<iostream>
using namespace std;

class Girl
{
private:
	string m_boys[3];
public:
	string m_name;

	//默认构造函数
	Girl()
	{
		m_boys[0] = "字都";
		m_boys[1] = "磐安";
		m_boys[2] = "宋雨";
	}

	//显示全部男朋友的姓名
	void showboyfriend()
	{
		cout << m_boys[0] << "," << m_boys[1] << "," << m_boys[2] << endl;
	}
	
	string&operator[](int ii)//函数的返回值是引用,这时可以把函数调用的表达式当成变量来使用。
	{
		return m_boys[ii];
	}
	const string& operator[](int ii) const
	{
		return m_boys[ii];
	}
};


int main()
{
	Girl g;
	g[0] = "wowo";  //把函数调用的表达式当成变量来使用。
	cout << "第一任男朋友:" << g[0] << endl;
	g.showboyfriend();

	const Girl g1 = g;//用对象g创建常对象g1。
	cout << "第一任男朋友:" << g1[0] << endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值