1.编写一个计数器Counter类,对其重载函数运算符“+”。
typedef unsigned short USHORT;
#include<iostream>
using namespace std;
class Counter
{
public:
Counter();
Counter(USHORT initialValue);
~Counter(){
}
USHORT getValue()const{return value;}
void setValue(USHORT x){value=x;
}
Counter operator+(const Counter &);
private:
USHORT value;
};
Counter::Counter(USHORT initialValue):
value(initialValue){
}
Counter::Counter():
value(0){
}
Counter Counter::operator+(const Counter&rhs){
return Counter(value+rhs.getValue());
}
int main(){
Counter varOne(2),varTwo(4),varThere;
cout<<"varOne:"<<varOne.getValue()<<endl;
cout<<"varTwo:"<<varTwo.getValue()<<endl;
cout<<"varThere:"<<varThere.getValue()<<endl;
return 0;
}
2.编写一个哺乳动物类Mammal,再由此派生出狗类Dog,二者都声明speak()成员函数,该函数在基类中被声明为虚函数,声明一个Dog类的对象,通过此对象调用speak函数,观察运行结果。
#include<iostream>
using namespace std;
class Mammal{
public:
Mammal(){
cout<<"Mammal constructor...\n";
}
virtual~Mammal(){
cout<<"Mammal destructor...\n";
}
virtual void speak()const{
cout<<"Mammal speak!\n";
}
};
class Dog:public Mammal{
public:
Dog(){
cout<<"Dog Constructor...\n";}
~Dog(){
cout<<"Dog destructor...\n";
}
void speak() const{
cout<<"Woof!\n";}
};
int main(){
Mammal*pDog=new Dog;
pDog->speak();
delete pDog;
return 0;
}