派生类

继承

让人想犯罪 __ 提交于 2019-12-01 05:08:47
继承 一.继承的三大类 公有继承 私有继承 保护继承 继承方式规定了如何访问从基类继承的成员。 继承关键字为:public,protected和private。如果不显示地给出继承方式关键字,系统的默认值就认为是私有继承。 类的继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。 二.公有继承 例子: #include<iostream> using namespace std; class Point { public: void initPoint(float x = 0, float y = 0) { this->x = x; this->y = y; } void move(float offX, float offY) { x += offX; y += offY; } float getX() { return x; } float getY() { return y; } private: float x, y; }; class Rectangle :public Point { private: float w, h; public: void initRectangle(float x, float y, float w, float h) { initPoint(x, y); this->w = w; this->h = h; } float

继承

有些话、适合烂在心里 提交于 2019-12-01 05:06:31
继承与派生 1.派生类的定义 1.定义:类的继承是新的类从已有类那里得到己有的特性,从已有类产生新类的过程就是类的派生。原有类称为基类或父类,产生的新类称为派生类或子类。 代码示例: /* //定义语法 class 派生类名:继承方式1 基类1,继承方式2 基类2 { 派生类成员声明; }; */ class Did:public Did1,private Did2 { public: Did(); ~Did(); }; 2.生成派生类 1)吸收基类成员 将基类成员全盘吸收 ,派生类包含了除构造和析构函数之外所有成员。(定义派生类后自动完成,无法干预) 2)改造基类成员 基类成员访问控制问题,依靠派生类定义时的继承方式来控制。 对基类数据或函数成员覆盖与隐藏。 同名隐藏:申明了一个与基类成员同名的新成员,派生类新成员隐藏了外层同名成员。 3)添加新的成员 3.继承种类 1)单继承:也就是一个子类只有一个父类。 class 派生类名:继承方式 基类名 { 派生类新定义成员 }; 2)多继承:就是一个子类可以有多个父类。 class 派生类名:继承方式1 基类1,继承方式2 基类2 { 派生类成员声明; }; 示例: #include "pch.h" #include<iostream> using namespace std; class did { public: int var0

继承

自古美人都是妖i 提交于 2019-11-30 22:47:49
1.什么是继承 类的继承,是新的类从已有类那里得到已有的特性,从另一角度看,从已有类产生新类的过程就是类的派生。 原有的类称为基类或父类,产生的新类称为派生类或子类。 2.派生类的定义 语法: class 派生类名:继承方式 基类名1,继承方式 基类名2,……,继承方式 基类名n { 派生类成员声明; }; 假设现有两个已定义的类cl1,cl2,先用新类cl3继承之,代码如下: 1 class cl3 :public cl1, private cl2 2 { 3 public: 4 getX(int x); 5 private: 6 int x, y; 7 8 }; 该继承为多继承,public、private为继承方式关键词,分别表示公有继承和私有继承,因此还有以下要点: ①一个派生类,可以同时有多个基类,这种情况成为多继承,一个派生类只有一个直接基类的情况,成为单继承 ②在类族中,直接参与派生出某类的基类称为直接基类,基类的基类甚至更高层的基类称为间接基类 ③继承方式 来源: https://www.cnblogs.com/jianW1024/p/11643671.html

继承与派生

江枫思渺然 提交于 2019-11-30 21:03:52
继承与派生概述: 继承与派生是同一个过程从不同的角度看: 保持已有类的特性而构成新类的过程称为 继承 在已有类的基础上新增自己的特性而产生新类的过程称为 派生 被继承的已有类成为 基类 (父类)base class 派生出的新类称为 派生类 (子类)derived class 直接参与派生出某类的基类成为 直接基类 基类的基类甚至更高层的基类称为 间接基类 继承的目的: 实现设计与代码的重用,充分利用原有的类 派生的目的: 当新的问题出现,原有程序无法解决,需要对原有程序进行改造 单继承时派生类的定义: class 派生类名:继承方式 基类名{ 成员声明; } 例子: class Derived: public Base{ public: Derived(); ~Derived(); }; 多继承时派生类的定义: class 派生类名:继承方式1 基类名1, 继承方式2 基类名2, 。。。。。 { 成员声明; }; 例子: class Derived: public Base1, private Base 2{ public: Derived(); ~Derived(); }; 派生类的构成: 吸收基类的成员,(默认情况下,派生类包含全部基类中除了构造函数之外的所有成员,C++11规定可以使用using语句继承基类构造函数) 改造基类成员,

Coursera Cpp程序设计 week 4

我的未来我决定 提交于 2019-11-30 14:28:36
这一周的内容主要是介绍继承和派生,下面回顾下。 课程地址: coursera:C++程序设计 https://www.coursera.org/learn/cpp-chengxu-sheji 中国大学MOOC:程序设计与算法(三)C++面向对象程序设计 程序设计与算法(三)C++面向对象程序设计 继承和派生 基本概念 继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点), 那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)。 派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public并且在派生类的各个成员函数中,不能访问基类中的private成员。 来看一个学生类和大学生类,研究生类的例子: 1234567891011121314151617181920212223242526 class { private: string sName; int nAge; public: bool IsThreeGood() { }; void SetName( const string & name ) { sName = name; }};class CUndergraduateStudent: public CStudent { private: int nDepartment; public: bool

嵌入式C++测试题

早过忘川 提交于 2019-11-30 10:30:18
仅供学习,为嵌入式帝国做亿分之一的贡献吧,临近国庆,祝大家国庆节快乐哦 答案仅供参考吧 一、 选择题(共 80 分, 每题 2 分 ) ( 1 ) A ( 2 ) C ( 3 ) C ( 4 ) B ( 5 ) D ( 6 ) C ( 7 ) C ( 8 ) D ( 9 ) A ( 10 ) C ( 11 ) A (12) B (13) D (14) B (15) A ( 16 ) A ( 17 ) C ( 18 ) D ( 19 ) D ( 20 ) C ( 21 ) C ( 22 ) D ( 23 ) D ( 24 ) D ( 25 ) A ( 26 ) C (27) C (28) C (29) B (30) B ( 31 ) A ( 32 ) D ( 33 ) D ( 34 ) B ( 35 ) A ( 36 ) A ( 37 ) B ( 38 ) B ( 39 ) C ( 40 ) C 二、 填空题(每空 1 分, 共 20 分) 1. 构造函数 2. friend 保护和私有成员 3. 先基类在派生类 4. 单一继承 5. virtual 6. 静态多态性 动态多态性 7. 抽象类 8. 测试是否文件尾 9. 成员函数 10. try throw catch 11. 代码复用和泛型程序设计 12. 类的友元函数 13. 抛出异常 捕捉异常 14. template 15.

C++—多态与继承

房东的猫 提交于 2019-11-30 09:32:46
一、基本概念 1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是 类的派生 。原有的类称为 基类或父类 ,产生的新类称为 派生类或子类 。 2、派生类的声明: class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n { 派生类成员声明; }; 3、一个派生类可以同时有多个基类,这种情况称为 多重继承 ,派生类只有一个基类,称为 单继承 。直接派生,间接派生。 4、继承方式规定了如何访问基类继承的成员。继承方式有public, private, protected。如果不显示给出继承方式,默认为private继承。继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。 5、 派生类继承基类中除 构造和析构 函数以外的所有成员 。 6、派生类生成: 吸收基类成员(除构造析构函数以外的所有成员); 改造基类成员(根据继承方式调整基类成员的访问,函数在子类中的覆盖,以及虚函数在子类中的覆盖); 添加新的成员; 7、公有继承 当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员。派生类的其他成员可以直接访问它们。 无论派生类的成员还是派生类的对象都无法访问基类的私有成员 。 8、私有继承

c++笔记(中)

强颜欢笑 提交于 2019-11-30 04:40:17
继承与派生 面向对象程序设计4个主要特征:抽象,封装,继承,多态性 c++通过继承实现可重用性。有时两个类的内容基本相同或有一部分相同,这时可以利用原来声明的类作为基础,再加上新的内容即可,减少了工作量。 //比如有一个类class student { public: void display() {cout<<"num:"<num<<endl; cout<<"name"<<nam<<endl; cout<<"sex"<<sex<<endl; } private: int num; string nam; char sex; }; 现在想增加student 类的信息,可以重新写 class student1 { public: void display() {cout<<"num:"<num<<endl; cout<<"name"<<nam<<endl; cout<<"sex"<<sex<<endl; cout<<"age"<<age<<endl; cout<<"address"<<addr<<endl; } private: int num; string nam; char sex; int age; char addr{20}; }; 也可以通过继承来实现 class student1: public student //声明基类是student, { public:

c/c++常见面试题(一)

佐手、 提交于 2019-11-29 21:39:57
0.static、const、volatile的作用和区别 static: https://www.cnblogs.com/Manual-Linux/p/8870038.html 第一 、在修饰变量的时候,static修饰的静态局部变量只执行一次,之后再初始化无效。而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 第二 、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 第三 、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0 const: 1.修饰的变量只读,不可改变 2.防止意外修改,减少bug 3.可以节省空间,避免不必要的 内存分配 volatile: 告诉编译器这个变量随时可变,不需要优化 1.请问全局变量和局部变量能否重名 能,局部会屏蔽全局。要用全局变量,需要使用"::" 2. 用三目运算符(X)>(Y)?(X):(Y)宏定义实现比较两个数的大小 #define MAX(X, Y) ((X)>(Y)?(X):(Y)) 3.malloc的了解 malloc是动态内存分配,是用户动态申请系统分配指定字节的内存块的函数。返回类型是 void* 类型 对应free,

C++多态原理与内部结构

陌路散爱 提交于 2019-11-29 14:59:05
多态类型 多态可以分为 静态多态 和 动态多态 : 静态多态其实就是重载 ,因为静态多态是指在编译时期在形成符号表的时候, 对函数名做了区分 ,根据参数列表来决定调用哪个函数, 也叫编译时多态 ; 动态多态是指通过子类重写父类的虚函数来实现 的,因为是 在运行期间决定调用的函数 ,所以称为 动态多态 ,一般情况下我们不区分这两个时所说的多态就是指动态多态。 动态多态的实现与虚函数表,虚函数指针相关,下面详述。 虚函数相关 首先我们来说一下,C++中多态的表象, 在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数 。如果对象类型是派生类,就调用派生类的函数,如果是基类,就调用基类的函数。 实际上, 当一个类中包含虚函数时,编译器会为该类生成一个虚函数表,保存该类中虚函数的地址 ,同样,派生类继承基类,派生类中自然一定有虚函数,所以 编译器也会为派生类生成自己的虚函数表 。当我们定义一个派生类对象时,编译器检测该类型有虚函数,所以为这个派生 类对象生成一个虚函数指针,指向该类型的虚函数表 ,这个虚函数 指针的初始化在构造函数中完成 的。后续如果有一个基类类型的指针,指向派生类,那么当调用虚函数时, 从对象的前4个字节中取虚表地址 ,根据所指真正对象的虚函数表指针去寻找虚函数的地址,也就可以调用派生类的虚函数表中的虚函数