初学编程C++之isa

代码示例:

#include
#include
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
初学编程C++之isa_第1张图片
test2
初学编程C++之isa_第2张图片
test3
初学编程C++之isa_第3张图片

你可能感兴趣的:(c++)