c++中的类之间继承的关系

这篇博客为个人笔记,没有任何参考价值,只是为了方便自己日后复习,所写代码比较杂乱,甚至有错误的地方,如果你想获取什么知识,防止误导,请移步

如果有描述不准确的地方,欢迎指导


 #include<iostream.h>
class Animal
{
	public:
		Animal(int height,int weight)//增加一个构造函数
		{
			cout<<"animal consturct"<<endl;//先构造父类,再构造子 类
		}
		~Animal()  //析构的时候是子类先析构,然后才是父类
		{          
		}
		void eat()
		{
			cout<<"animal eat"<<endl;
		}
	protected://保护变量,对于子类是可以访问的,子类可以继承,保护在外部是不可以访问的
		void sleep()
		{
			cout<<"animal sleep"<<endl;
		}
	private://这是私有的,只能在自己的内部访问,哪怕是自己的子类也不能访问
		void breathe()
		{
			Animal::breathe();//作用域标志符,继承父类的呼吸
			cout<<"anmimal breathe"<<endl;
		}
};
class Fish:public Animal// c++提供继承这种特性,我们想让鱼也继承动物的特性
                         // 按照public继承 Fish 是子类或者派生类 Animal是父类
{
public:
    Fish():Animal(400,200)//子类中向基类传递函数
	{
		cout<<"fish construct"<<endl;
	}
// virtual	void breathe()=0;//纯需函数,可以让类有个名称,让派生类来使用
	                        //比如将来不确定这个行为,但是这个行为肯定有,有派生类具体来实现
virtual	void breathe() //函数的覆盖发生在父类和子类之间,函数重载是发生在一个类之间的
		           //继承一个类,有的行为不需要了,
				   //virtual虚函数,会依据对象的类型来确认调用哪种函数,需要指正
				   //基函数前加virtual函数,如果子类有,调用子类;如果子类没有,调用父类
	{
		cout<<"fish bubble"<<endl;
	}
};
void fn(Animal *pAn)
{
	pAn->breathe();
}
int change(int &a,int &b)
{
}
void main()
{
//	Animal an(2,3);
//	an.eat();
	Fish fh;
	Animal *pAn
	fh(pAn)   //c++中的多态性:如果没有vitual 返回父类的指针(早期绑定)
	          // 如果有vitualc++采用迟绑定的的技术
	int a = 6;
	int &b=a; //b是a引用的一个别名,必须在引用前就初始化,不需要内存地址;
	          //而指针变量本身是需要内存来访的
	b=5;
	int c = 7;
	b = c;//将c赋给b,此时a也为a

	int x=3;
	int y=4;
	change(x,y)
//	fh.sleep();
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值