您的位置:首页 > 编程语言 > C语言/C++

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

2017-08-16 19:41 274 查看
这篇博客为个人笔记,没有任何参考价值,只是为了方便自己日后复习,所写代码比较杂乱,甚至有错误的地方,如果你想获取什么知识,防止误导,请移步
如果有描述不准确的地方,欢迎指导

#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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: