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();
}
如果有描述不准确的地方,欢迎指导
#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();
}
相关文章推荐
- C++中三个特性(继承、封装、多态、类之间的关系)
- c++将文件之间编译关系降到最低
- 浅谈基类与子类之间继承关系
- Spring 中 bean 之间的关系:继承;依赖
- C Runtime Library、C++ Runtime Library、Windows API 和 C++标准四者之间的关系
- 验证当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别
- C++之确定你的public继承塑模出is-a关系(32)---《Effective C++》
- c++中的模版和多态之间的关系
- C++的继承关系
- C++ 指针,引用,普通变量之间的关系
- [MFC学习之C++基础] 孙鑫视频中第三讲中提到的小测试程序(关于基类和子类的继承关系)
- 接口之间继承、抽象类普通类继承关系总结 (
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- C++中 0 与 NULL 与 nullptr之间的关系,nullptr_t 的实现
- 继承 实现 依赖 关联 聚合 组合之间的关系和联系
- C#中两个类之间有继承关系时的执行顺序~
- c++ 友元关系与继承
- 再谈C++中的has-a关系(通过复合塑模出has-a、明智而审慎地使用Private继承)
- C++继承体系中Is a 关系 和has a关系