C++操作符重载
作者:网络转载 发布时间:[ 2012/11/20 9:56:46 ] 推荐标签:
4、下标操作符
小标操作应该注意,在用作赋值的左右操作数时,都应该表现的正常。所以,这要求返回的类型应该为引用。
小面定义一个类China,包含省级行政单位,定义在hina.h头文件中:
#if !defined(AFX_HINA_H__2E76F1BB_EE30_4584_9C8F_C46A4C613620__INCLUDED_)
#define AFX_HINA_H__2E76F1BB_EE30_4584_9C8F_C46A4C613620__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif
#include <string>
class China
{
public:
China();
std::string& operator[](const int index);
virtual ~China();
private:
std::string *province;
};
#endif
源文件为hina.cpp,如下实现:
#include "hina.h"
China::China()
{
province=new std::string[34];
province[0]=std::string("山西省");
province[1]=std::string("湖北省");
province[2]=std::string("北京市");
}
China::~China()
{
delete []province;
}
std::string& China::operator [](const int index)
{
if(index<0||index>34)
return std::string("有错误");
return province[index];
}
这样保证下标返回返回的值既可以是左值,又是右值。在main函数中测试通过:
#include <iostream>
#include "hina.h"
using namespace std;
int main()
{
China c;
c[0]="张译成";
cout<<c[0]<<endl;
return 0;
}
我将山西省换成我的名字,改变了c对象中的值,c[0]="张译成";中,c[0]是左值,cout<<c[0]<<endl;中c[0]是右值。表现正常。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11