c++ 继承/派生、访问属性、构造函数
来源:互联网 发布:私募公募 知乎 编辑:程序博客网 时间:2024/06/05 05:52
1.子类继承父类的继承方式:public,private,protected,不写则默认为private;
2.子类会继承父类的全部成员(除了构造函数、析构函数,虽然析构函数有virtual,但是不是继承的意思),全盘接受,没得选,不能只继承一部分,而不继承另一部分,这样就可能造成数据冗余,在继承时可能会继承了一大堆没用的东西,这个问题目前的c++也无法解决,所以继承时父类的选择要谨慎。但是,可以改变继承的成员在子类中的访问属性,即可能全盘继承了父类的成员之后访问不了!!!
3.
父类中的访问属性继承方式子类中的访问属性privatepublic/protected/private不可访问publicpublicpublicpublicprotectedprotectedpublicprivateprivateprotectedpublicprotectedprotectedprotectedprotectedprotectedprivateprivate4.protected成员在本类内相当于private,但是在子类中就不一样了,子类中可以访问父类的protected成员。若某类声明了protected成员,就说明这个类可能要当作父类,是为了继承做准备的。
5.类外可访问类的public成员,不可访问类的private和protected成员。
6.构造函数是为了初始化类的数据成员,可以不自己定义,这样系统就会自动设置默认构造函数,也可以自己定义。因为构造函数不能继承,所以子类在初始化时要同时初始化父类,一般是在定义子类构造函数时调用父类的构造函数,声明子类构造函数时不用加上父类构造函数。
形式:子类构造函数名(总参数表,即所有参数):父类构造函数名(参数表)
{
//子类新增成员初始化
}
e.g.student1(int n,string nam,char s,int a,string ad):student(n,nam,s)
{
//新增成员初始化
}
上述student为父类,student1为子类。
这种方式其实和构造函数的初始化列表是一样的,如
box(int h,int w,int l):height(h),width(w),length(len) { //新增成员初始化 }
其实就是利用初始化表调用父类的构造函数,也可以将两者结合起来,即既有初始化表,也有父类构造函数调用,如
student1(int n,string nam,char s,int a,string ad):student(n,nam,s),age(a),addr(ad) { }
若一个类的数据成员中包括类对象,即对象中的对象,则可用如下方式定义:
student1(int n,string nam,int n1,string nam1,string ad):student(n,nam),monitor(n1,nam1)
{
...
}
上述monitor为student1中的对象(student类型的)。
7.子类和父类的转换:可以把子类的对象赋值给父类的对象,而不能反过来(没有指针的事)。
指向父类对象的指针也可以指向子类,但是只能访问子类中从父类继承的部分,不能访问子类自己新增的部分。若父类指针指向子类,则指针类型自动转换,由子类转为父类(e.g. father* p=new son;),这样,指针指向的就是子类中的父类部分。
8.类的组合:一个类中的数据成员包含另一个类的对象,类的组合是横向的,说明了是否拥有某一属性。类的继承是纵向的,说明了是否属于某一事物。组合和继承是软件重用的重要方式。
- c++ 继承/派生、访问属性、构造函数
- 【C++】派生类构造函数
- 继承后基类、派生类的访问属性
- 多重继承派生类的构造函数
- 多重继承派生类的构造函数
- 多重继承派生类的构造函数
- c#派生类继承构造函数
- 派生类构造函数-多继承
- C++基础:继承与派生(构造 析构函数 显式访问)
- 继承与派生:派生类的构造函数
- 继承与派生:虚基类及其派生类的构造函数
- 三十九、继承与派生:派生类的构造函数****
- [C++]派生类构造函数举例(多继承、含有内嵌对象)
- C++(继承时的名字遮蔽&&派生类的构造函数)
- C#——面向对象——继承——派生类及其构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- spring mybatis mapper接口注解方式注入
- Leetcode算法学习日志-53 Maximum Subarray
- java代码读取到excel的两列数据,进行相乘得到新的数据
- sql 编辑功能名称重复性校验
- 电解电容器的用途
- c++ 继承/派生、访问属性、构造函数
- D. Nested Segments
- 从集成方法到神经网络:自动驾驶技术中的机器学习算法有哪些?
- 三分钟学会用SpringMVC搭建最小系统(超详细)
- RocketMQ原理解析-producer 4.发送分布式事物消息
- 查看mysql的版本
- Android流式布局
- Mac 使用virtualenv安装 matplotlib的解决方案
- zoj1107FatMouse and Cheese 记忆化搜索