オブジェクト向けプログラミング——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