C++基础学习(六),继承

#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;
}






猜你喜欢

转载自blog.csdn.net/u012592062/article/details/80342998