Update 中括号重载.cpp

This commit is contained in:
Francis
2020-06-14 19:28:32 +08:00
committed by GitHub
parent 1ca9bceb61
commit e4cf08593b

View File

@@ -1,51 +1,58 @@
//Eg8-9.cpp
#include <iostream> #include <iostream>
#include <cstring> #include <cstring>
using namespace std; using namespace std;
struct Person{ //ְ<><D6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ľṹ struct Person
double salary; { //职工基本信息的结构
char *name; double salary;
char *name;
}; };
class SalaryManaege{ class SalaryManaege
Person *employ; //<2F><><EFBFBD><EFBFBD>ְ<EFBFBD><D6B0><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {
int max; //<2F><><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1>Ͻ<EFBFBD> Person *employ; //存放职工信息的数组
int n; //<2F><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʵ<EFBFBD><CAB5>ְ<EFBFBD><D6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int max; //数组下标上界
int n; //数组中的实际职工人数
public: public:
SalaryManaege(int Max=0){ SalaryManaege(int Max = 0)
max=Max; {
n=0; max = Max;
employ=new Person[max]; n = 0;
} employ = new Person[max];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ֱ<EFBFBD><D6B1>ʹ<EFBFBD><CAB9> }
double &operator[](char *Name) { //<2F><><EFBFBD><EFBFBD>[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //返回引用特性是可以直接在放在左值,直接使用
Person *p; double &operator[](char *Name)
for(p=employ;p<employ+n;p++) { //重载[],返回引用
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD> Person *p;
if(strcmp(p->name,Name)==0) for (p = employ; p < employ + n; p++)
return p->salary; //如果存在处理
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if (strcmp(p->name, Name) == 0)
p=employ + n++; return p->salary;
p->name=new char[strlen(Name)+1]; //不存在情况处理
strcpy(p->name,Name); p = employ + n++;
p->salary=0; p->name = new char[strlen(Name) + 1];
return p->salary; strcpy(p->name, Name);
} p->salary = 0;
return p->salary;
}
void display(){ void display()
for(int i=0;i<n;i++) {
cout<<employ[i].name<<" "<<employ[i].salary<<endl; for (int i = 0; i < n; i++)
} cout << employ[i].name << " " << employ[i].salary << endl;
}
~SalaryManaege() {
delete employ;
}
}; };
int main(){ int main()
{
SalaryManaege s(3); SalaryManaege s(3);
s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]=2188.88; s["张三"] = 2188.88;
s["<EFBFBD><EFBFBD>˹"]=1230.07; s["里斯"] = 1230.07;
s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]=3200.97; s["王无"] = 3200.97;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]<<endl; cout<<"<EFBFBD><EFBFBD>˹\t"<<s["<EFBFBD><EFBFBD>˹"]<<endl; cout << "张三\t" << s["张三"] << endl;
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t"<<s["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]<<endl; cout << "里斯\t" << s["里斯"] << endl;
cout << "王无\t" << s["王无"] << endl;
cout<<"-------<EFBFBD><EFBFBD>Ϊdisplay<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------\n\n"; cout << "-------下为display的输出--------\n\n";
s.display(); s.display();
system("pause");
} }