update
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
class B{
|
||||
public:
|
||||
void f(){ g(); }
|
||||
virtual void g(){ cout << "B::g"; }
|
||||
};
|
||||
class D : public B{
|
||||
public:
|
||||
void g(){ cout << "D::g\n"; }
|
||||
};
|
||||
int main(){
|
||||
D d;
|
||||
d.f();
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
92
practical_exercises/10_day_practice/day6/虚函数/编程实例.cpp
Normal file
92
practical_exercises/10_day_practice/day6/虚函数/编程实例.cpp
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
ij<EFBFBD><EFBFBD>˾<EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Աÿ<EFBFBD>µ<EFBFBD>н800Ԫ<EFBFBD><EFBFBD>
|
||||
Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5%<25><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>ݡ<EFBFBD>
|
||||
Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><EFBFBD><EFBFBD>Employee<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>̳и<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܡ<EFBFBD>
|
||||
*/
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
class Employee{
|
||||
public:
|
||||
Employee(string Name ,string id){ name=Name; Id=id; }
|
||||
string getName(){ return name; } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
string getID(){ return Id; } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>
|
||||
float getSalary(){ return 0.0; } //<2F><><EFBFBD><EFBFBD>нˮ
|
||||
void print(){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: "<<name<<"\t\t <20><><EFBFBD><EFBFBD>: "<<Id<<endl;
|
||||
}
|
||||
private:
|
||||
string name;
|
||||
string Id;
|
||||
};
|
||||
class Manager:public Employee{
|
||||
public:
|
||||
Manager(string Name,string id,int week):Employee(Name,id){
|
||||
WeeklySalary=week*1000;
|
||||
}
|
||||
float getSalary(){ return WeeklySalary; } //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
|
||||
void print(){ //<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>н
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t\t <20><><EFBFBD><EFBFBD>: "<<getID()
|
||||
<<"\t\t <20>ܹ<EFBFBD><DCB9><EFBFBD>: "<<getSalary()<<endl;
|
||||
}
|
||||
private:
|
||||
float WeeklySalary; //<2F><>н
|
||||
};
|
||||
|
||||
|
||||
class SaleWorker:public Employee{
|
||||
public:
|
||||
SaleWorker(string name,string id,int profit,int x):Employee(name,id){
|
||||
workerMoney=baseMoney+x*0.05*profit;
|
||||
}
|
||||
float getSalary(){
|
||||
return workerMoney;
|
||||
}
|
||||
void print(){
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>"<<getName()<<"\t\t <20><><EFBFBD><EFBFBD>: "<<getID()
|
||||
<<"\t\t <20>ܹ<EFBFBD><DCB9><EFBFBD>: "<<getSalary()<<endl;
|
||||
}
|
||||
private:
|
||||
float baseMoney=800.0;
|
||||
float workerMoney;
|
||||
};
|
||||
class HourWorker:public Employee{
|
||||
public:
|
||||
HourWorker(string name,string id,int h):Employee(name,id){
|
||||
TotalMoney=h*hourMoney;
|
||||
}
|
||||
float getSalary(){
|
||||
return TotalMoney;
|
||||
}
|
||||
void print(){
|
||||
cout<<"Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t\t <20><><EFBFBD><EFBFBD>: "<<getID()
|
||||
<<"\t\t <20>ܹ<EFBFBD><DCB9><EFBFBD>: "<<getSalary()<<endl;
|
||||
}
|
||||
private:
|
||||
float hourMoney=100.0;
|
||||
float TotalMoney;
|
||||
};
|
||||
|
||||
|
||||
int main(){
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>";
|
||||
int week;
|
||||
cin>>week;
|
||||
Manager m("С<EFBFBD><EFBFBD>","11111111",week);
|
||||
m.print();
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
int profit;
|
||||
cin>>profit;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
int x;
|
||||
cin>>x;
|
||||
SaleWorker s("С<EFBFBD><EFBFBD>","222222",profit,x);
|
||||
s.print();
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD>Сʱ<EFBFBD><EFBFBD>";
|
||||
int hour;
|
||||
cin>>hour;
|
||||
HourWorker h("С<EFBFBD><EFBFBD>","333333",hour);
|
||||
h.print();
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
66
practical_exercises/10_day_practice/day6/虚函数/虚函数例子.cpp
Normal file
66
practical_exercises/10_day_practice/day6/虚函数/虚函数例子.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
//Eg7-1.cpp
|
||||
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>Employee<65><65>printΪ<74>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7>ʵ<EFBFBD>Manager<65><72>print<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܷ<EFBFBD><DCB7>ʵ<EFBFBD>Employee<65><65>print
|
||||
#include<iostream>
|
||||
#include<string>
|
||||
using namespace std;
|
||||
class Employee{
|
||||
public:
|
||||
Employee(string name, string id);
|
||||
string getName();
|
||||
string getId();
|
||||
float getSalary();
|
||||
virtual void print();
|
||||
private:
|
||||
string Name;
|
||||
string Id;
|
||||
};
|
||||
Employee::Employee(string name,string id){
|
||||
Name=name;
|
||||
Id=id;
|
||||
}
|
||||
string Employee::getName(){
|
||||
return Name;
|
||||
}
|
||||
string Employee::getId(){
|
||||
return Id;
|
||||
}
|
||||
float Employee::getSalary(){
|
||||
return 0.0;
|
||||
}
|
||||
void Employee::print(){
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<Name<<"\t"<<"<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>"<<Id<<endl;
|
||||
}
|
||||
|
||||
class Manager:public Employee{
|
||||
public:
|
||||
Manager(string name,string id,float s=0.0):Employee(name,id){
|
||||
weeklySalary=s;
|
||||
}
|
||||
void setSalary(float s) { weeklySalary=s; } //<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
|
||||
float getSalary(){ return weeklySalary; } //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н
|
||||
void print(){ //<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>н
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<getName()<<"\t\t <20><><EFBFBD><EFBFBD>: "<<getId()<<"\t\t <20>ܹ<EFBFBD><DCB9><EFBFBD>: "<<getSalary()<<endl;
|
||||
}
|
||||
private:
|
||||
float weeklySalary; //<2F><>н
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ֵ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>м̳е<EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ඨ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>麯<EFBFBD><EFBFBD>ʹ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ඨ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><EFBFBD>
|
||||
*/
|
||||
int main(){
|
||||
Employee e("С<EFBFBD><EFBFBD>","NO0001"),*pM;
|
||||
Manager m("С<EFBFBD><EFBFBD>","NO0002",128);
|
||||
m.print();
|
||||
pM=&m;
|
||||
pM->print();
|
||||
Employee &rM=m;
|
||||
rM.print();
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
||||
//Virtual<61>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Ǹ<EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ϊvirtual<61>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>롣
|
30
practical_exercises/10_day_practice/day6/虚函数/虚函数特性.cpp
Normal file
30
practical_exercises/10_day_practice/day6/虚函数/虚函数特性.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include <iostream>
|
||||
#include<string>
|
||||
using namespace std;
|
||||
class A {
|
||||
public:
|
||||
void f(int i){cout<<"<EFBFBD><EFBFBD>A"<<endl;};
|
||||
};
|
||||
class B: public A {
|
||||
public:
|
||||
virtual void f(int i){cout<<"<EFBFBD><EFBFBD>B"<<endl;}
|
||||
};
|
||||
class C: public B {
|
||||
public:
|
||||
void f(int i){cout<<"<EFBFBD><EFBFBD>C"<<endl;}
|
||||
};
|
||||
//һ<><D2BB><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ̳<DABC><CCB3><EFBFBD>ϵ<EFBFBD>о<EFBFBD><D0BE><EFBFBD>ԶΪ<D4B6>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD>
|
||||
class D: public C{
|
||||
public:
|
||||
void f (int){cout<<"<EFBFBD><EFBFBD>D"<<endl;}
|
||||
};
|
||||
int main(){
|
||||
A *pA,a;
|
||||
B *pB, b; C c; D d;
|
||||
pA=&a; pA->f(1); //<2F><><EFBFBD><EFBFBD>A::f
|
||||
pB=&b; pB->f(1); //<2F><><EFBFBD><EFBFBD>A::f
|
||||
pB=&c; pB->f(1); //<2F><><EFBFBD><EFBFBD>A::f
|
||||
pB=&d; pB->f(1); //<2F><><EFBFBD><EFBFBD>A::f
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
22
practical_exercises/10_day_practice/day6/虚函数/虚析构函数.cpp
Normal file
22
practical_exercises/10_day_practice/day6/虚函数/虚析构函数.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
class A{
|
||||
public:
|
||||
virtual ~A(){ cout<<"call A::~A()"<<endl; }
|
||||
};
|
||||
class B:public A{
|
||||
char *buf;
|
||||
public:
|
||||
B(int i){buf=new char[i];}
|
||||
~B(){
|
||||
delete [] buf;
|
||||
cout<<"call B::~()"<<endl;
|
||||
}
|
||||
};
|
||||
int main(){
|
||||
A* a=new B(10);
|
||||
delete a;
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user