オブジェクト向けプログラミング——C++
3779 ワード
C++ , , .....
//Father.h
class Father
{
public:
Father();
virtual ~Father();
int getInt();
int setInt();
virtual int vsetInt();
};
//Son.h
class Son : public Father
{
public:
Son();
virtual ~Son();
int getInt();
int setInt();
virtual int vsetInt();
};
//Father.cpp
Father::Father()
{
}
Father::~Father()
{
}
int Father::getInt()
{
printf("Father: getInt()
");
return 1;
}
int Father::setInt()
{
printf("Father: setInt()
");
return 2;
}
int Father::vsetInt()
{
printf("Father: vsetInt()
");
return 11;
}
//Son.cpp
Son::Son()
{
}
Son::~Son()
{
}
int Son::getInt()
{
printf("Son: getInt()
");
return 3;
}
int Son::setInt()
{
printf("Son: setInt()
");
return 4;
}
int Son::vsetInt()
{
printf("Son: vsetInt()
");
return 5;
}
試験手順:
int main(int argc, char* argv[])
{
printf("Derived: Father* fa=new Son();-----------------------------------
");
Father* fa=new Son();
printf("%d
",fa->getInt());
printf("%d
",fa->setInt());
printf("--------Virtual Method---------------------------
");
printf("%d
",fa->vsetInt());
//printf("%d
",fa->Son::vsetInt()); //Son' : is not a member of 'Father'
printf("
");
printf("Derived: Son* fa2=new Son();-----------------------------------
");
Son* fa2=new Son();
printf("%d
",fa2->getInt());
printf("%d
",fa2->setInt());
printf("---------Virtual Method--------------------------
");
printf("%d
",fa2->vsetInt());
printf("%d
",fa2->Father::vsetInt());
printf("
");
printf("Derived: Son* fa3=new Father();-----------------------------------
");
Son* fa3=(Son*)new Father();
printf("%d
",fa3->getInt());
printf("%d
",fa3->setInt());
printf("---------Virtual Method--------------------------
");
printf("%d
",fa3->vsetInt());
printf("%d
",fa3->Father::vsetInt());
return 0;
}
:
Derived: Father* fa=new Son();-----------------------------------
Father: getInt()
1
Father: setInt()
2
--------Virtual Method---------------------------
Son: vsetInt()
5
Derived: Son* fa2=new Son();-----------------------------------
Son: getInt()
3
Son: setInt()
4
---------Virtual Method--------------------------
Son: vsetInt()
5
Father: vsetInt()
11
Derived: Son* fa3=new Father();-----------------------------------
Son: getInt()
3
Son: setInt()
4
---------Virtual Method--------------------------
Father: vsetInt()
11
Father: vsetInt()
11