初學程式設計C++之isa
阿新 • • 發佈:2018-12-11
程式碼示例:
#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