代码示例:
#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