1. 程式人生 > >初學程式設計C++之isa

初學程式設計C++之isa

程式碼示例:

#include<iostream>
#include<stdlib.h>
using namespace std;

/*
  保護繼承和私有繼承:
      要求:1、Person類
	           資料成員:m_strName
			   成員函式:建構函式、解構函式、play();
			2、Solder類
			   資料成員:m_iAge
			   成員函式:建構函式、解構函式、work();
			3、定義函式test1(Person p)、test2(Person &p)、test3(Person *p)
*/
//Person類
class Person
{
public:
	Person(string name="jim");
	virtual~Person();
	void play();
protected:
	string m_strName;
};
Person::Person(string name)
{
	m_strName=name;
	cout<<"Person"<<endl;
}
Person::~Person()
{
	cout<<"~Person"<<endl;
}
void Person::play()
{
	cout<<"Person--play"<<endl;
	cout<<m_strName<<endl;
}
//Soldier類
class Soldier: public Person
{
public:
	Soldier(string name="james",int age=20);
	virtual~Soldier();
	void work();
protected:
	int m_iAge;
};
Soldier::Soldier(string name,int age)
{
	m_strName=name;
	m_iAge=age;
	cout<<"Soldier()"<<endl;

}
Soldier::~Soldier()
{
	cout<<"~Soldier()"<<endl;
}
void Soldier::work()
{
	cout<<m_strName<<endl;
	cout<<m_iAge<<endl;
	cout<<"soldier--work()"<<endl;
}

void test1(Person p)
{
	p.play();
}
void test2(Person &p)
{
	p.play();
}
void test3(Person *p)
{
	p->play();
}

int main(void)
{
	/*Soldier soldier;
	Person *p=&soldier;
	p->play();*/
	Person p;
	Soldier s;
	/*test1(p);
	test1(s);
	test2(p);
	test2(s);*/
	test3(&p);
	test3(&s);

	system("pause");
	return 0;
}

列印結果: test1 在這裡插入圖片描述 test2 在這裡插入圖片描述 test3 在這裡插入圖片描述