#include <iostream> #include <string> using namespace std; class Fish { public: void Swim() { if (m_bFreshWaterFish) { cout<<"swims in lake"<<endl; } else { cout<<"swims in sea"<<endl; } } protected: bool m_bFreshWaterFish; }; class Tuna : public Fish { public: Tuna() { m_bFreshWaterFish = false; } }; class Carp : public Fish { public: Carp() { m_bFreshWaterFish = true; } }; int main() { Tuna tuna; Carp carp; tuna.Swim(); carp.Swim(); system("pause"); return 0; }
#include <iostream> #include <string> using namespace std; class Fish { public: Fish(bool isFreshWater) :m_bFreshWaterFish(isFreshWater) { } void Swim() { if (m_bFreshWaterFish) { cout<<"Swims in lake"<<endl; } else { cout<<"Swims in sea"<<endl; } } protected: bool m_bFreshWaterFish; }; class Tuna : public Fish { public: Tuna(bool isFreshWater) :Fish(isFreshWater) { } }; class Carp : public Fish { public: Carp(bool isFreshWater) :Fish(isFreshWater) { } }; int main() { Tuna tuna(false); Carp carp(true); tuna.Swim(); carp.Swim(); system("pause"); return 0; }
#include <iostream> #include <string> using namespace std; class FishDummyMember { public: FishDummyMember() { cout<<"call FishDummyMember() "<<endl; } ~FishDummyMember() { cout<<"call ~FishDummyMember() "<<endl; } }; class Fish { public: Fish() { cout<<"call Fish() "<<endl; } ~Fish() { cout<<"call ~Fish() "<<endl; } protected: FishDummyMember dummy; }; class TunaDummyMember { public: TunaDummyMember() { cout<<"call TunaDummyMember() "<<endl; } ~TunaDummyMember() { cout<<"call ~TunaDummyMember() "<<endl; } }; class Tuna : public Fish { public: Tuna() { cout<<"call Tuna() "<<endl; } ~Tuna() { cout<<"call ~Tuna() "<<endl; } private: TunaDummyMember dummy; }; //基类,派生类及其成员的构造和析构顺序测试 int main() { Tuna tuna; //system("pause"); return 0; }
#include <iostream> #include <string> using namespace std; class Base { public: void func() { cout<<"call Base.func()"<<endl; } }; class Sub : private Base { public: void callFunc() { func(); } }; //类的私有继承测试,只有派生类可以调用基类的方法,派生类的对象不能调 int main() { Sub sub; sub.callFunc(); //error C2247: “Base::func”不可访问,因为“Sub”使用“private”从“Base”继承 sub.func(); system("pause"); return 0; }