1.重载
代码:
#include<iostream>
using namespace std;
class time
{
int hour,minute,second;
public:
time(int h,int m,int s)
{
hour=h;minute=m;second=s;
}
void display()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
void display()const
{
cout<<hour<<"时"<<minute<<"分"<<second<<"秒"<<endl;
}
};
int main()
{
time t1(12,26,9);
t1.display();
const time t2(7,19,28);
t2.display();
运行结果:
12:26:9
7时19分28秒
2.虚函数(virtual)
代码:
#include<iostream>
using namespace std;
class Mammal
{
public:
virtual void Speak()
{
cout<<"Mammal Speak!"<<endl;
}
};
class Dog:public Mammal
{
public:
void Speak() //把基类的虚函数覆盖了,看输出结果
{
cout<<"Dog Speak!"<<endl;
}
};
int main()
{
Dog a;
Mammal&b=a;
a.Speak();
b.Speak();
}
运行结果 :
Dog Speak!
Dog Speak!
3.虚基类的应用(在多重派生的过程中,若使公共基类在派生类中只有一个拷贝,则可将这种类型说明为虚基类)
代码:
#include<iostream>
using namespace std;
class B
{
public:
int b;
};
class B1:virtual public B //在多重派生的过程中,若使公共基类在派生类中只有一个拷贝,则可将这种类型说明为虚基类
{
private:
int b1;
};
class B2:virtual public B
{
private:
int b2;
};
class C:public B1,public B2
{
private:
int d;
};
int main()
{
C c;
c.B1::b=5;
c.B2::b=10;
cout<<"path B1==>"<<c.B1::b<<endl;
cout<<"path B2==>"<<c.B2::b<<endl;
}
运行结果:
path B1==>10
path B2==>10