Update 中括号重载.cpp
This commit is contained in:
@@ -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<<"-------<2D><>Ϊdisplay<61><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------\n\n";
|
|
||||||
s.display();
|
|
||||||
system("pause");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
cout << "-------下为display的输出--------\n\n";
|
||||||
|
s.display();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user