C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数

1昨日回顾

2 多态的练习-圆的图形

3多态的练习-程序员薪资

4员工管理案例-抽象类和技术员工的实现

employee.h:

employee.cpp:

technician.h:

technician.cpp:

source.cpp:

5员工管理案例-销售和经理实现

修改employee.h:

displayStatus不用虚函数了

salesman.h:

salesman.cpp:

manager.h:

manager.cpp:

6员工管理案例-销售经理的实现

7 中午回顾

注意:

多继承的时候一定要将父类的析构函数设为虚函数

p1和p2的指针都指向Child

然后进行delete 看似没有问题 上面parent1到delete也不报错

但是其实已经错了

第一段代码之所以没报错是因为

Child的组成是a,b,c

开始free的时候把a部分释放掉了,

如果从b开始释放释放的大小就不对称了

delete只是malloc的封装,等于malloc+析构函数

结论:如果需要多继承,一定要加虚析构。

8 C语言中的函数指针

1.如何定义一个数组指针:

(array2 是一个大数组(二维数组) 里面每个部分都是一个array[10])

2.如何定义一个函数指针:

函数指针的调用:

9 C语言中的多态:

多态:

例如说:

子类中虚函数方法重写了父类虚函数方法

父类指针可以直接指向子类并调用子类的方法

可以定义一个架构函数,这个架构函数只要传入父类型的参数就可以,不用为每个子类单独去写一种参数。

C语言中的多态:通过回调函数,即函数指针,提供了一个统一的接口。函数指针调用函数,执行函数内部的不同的方法。

9 C语言中的多态

。。。略

赵云不关心锦囊是谁写的,可以直接调用struct * 类型的函数(struct*内部

调用者和实现者通过C语言中的回调函数实现隔离

多态是软件开发的最高境界

设计模式是讲怎么把多态写好

10 函数模板的基本语法

模板的作用 对参数类型的一个泛化,解决了一个代码重用性的问题

11 函数模板数组排序练习

12 模板函数和函数重载

13 函数模板和普通函数的匹配规则

14 编译器的编译过程

1.预处理:

宏展开

2.编译:

转化为汇编语言(可以直接操作寄存器)

如果想破解程序:

可执行程序反编译—通过汇编代码

  • 编译就是把C/C++代码(比如上面的”.i”文件)“翻译”成汇编代码。

3.汇编:

  • 汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现位ELF目标文件(OBJ文件)。

(二进制文件)

4.链接

链接就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序。

原文地址:https://www.cnblogs.com/eret9616/p/10513977.html

时间: 2024-10-16 04:49:27

C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数的相关文章

数组参数和指针参数

1.C语言中只会以值拷贝的方式传递参数 2.当向函数传递数组时,将数组名看做常量指针传数组首元素地址 3.二维数组参数同样存在退化的问题,二维数组可以看做是一维数组,二维数组中的每个元素是一维数组 4.二维数组参数中第一维的参数可以省略 5.C语言中无法向一个函数传递任意的多维数组 6.为了提供正确的指针运算,必须提供除第一维之外的所有维长度 7.限制:一维数组参数-必须提供一个标志数组结束位置的长度信息 二维数组参数-不能直接传递给函数 三维或更多维数组参数-无法使用 #include <st

C之数组参数和指针参数(三十一)

我们在前面讲了在 C 语言中,数组参数会退化为指针.那么这是为什么呢?在 C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,不是将整个数组拷贝一份传入函数而是将数组名看做常量指针传数组首元素地址. 那么当初在设立 C 语言时,主要是用于 Unix 操作系统,而 Unix 效率要求很高.所以 C 语言以高效作为最初设计目标:a> 参数传递的时候如果拷贝整个数组执行效率将会大大下降:b> 参数位于栈上,太大的数组拷贝将导致栈溢出.函数调用栈是用一片内存来存放的,如果栈溢出,那么函数调用将无

C语言中关于指针的学习

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试.只要作到这些,指针也是不难掌握的. 指针的基本概念 在计算机中,所有的数据

c语言中结构体指针

1.指向结构体的指针变量: C 语言中->是一个整体,它是用于指向结构体,假设我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到指向运算符"->". 举例说明: struct SunLL { int a; int b; int c; }; struct SunLL  * p;               //定义结构体指针 struct SunLL A = {1,2,3};    //定义一个SunLL类型的变量A

黑马程序员--C语言中的指针(4)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 使用字符串指针变量与字符数组的区别 用字符数组和字符指针变量都可实现字符串的存储和运算. 但是两者是有区别的.在使用时应注意以下几个问题: 1. 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘/0’作为串的结束.字符数组是由于若干个数组元素组成的,它可用来存放整个字符串. 2. 对字符数组作初始化赋值,必须采用外部类型或静态

C的函数指针与指针函数

1.函数指针 指向函数的指针.本质是一个指针. 指针变量可以指向变量的地址.数组.字符串.动态分配地址,同时也可指向一个函数,每个函数在编译的时候,系统会分配给该函数一个入口地址,函数名表示这个入口地址,那么指向函数的指针变量称为函数指针变量. 引论: int sumup(int a, float b); int (*p3) (int a, float b);    //加入p3=&sumup;则p3作为指针指向sumup.这就是p3指针指向函数 [回顾:两者的返回值和形参都是  int    

C语言基础学习3:数组与指针

数组元素的指针就是数组元素的地址. 1.指向数组元素的指针 C语言规定数组名(不包括形参数组名,形参数组并不占据实际的内存单元)代表数组中的首元素(即序列为0的元素)的地址. int a[10]; int *p1,*p2; p1 = &a[0]; p2 = a; p1和p2指向同一个数组a[10]. 2.通过指针引用数组元素 按C语言的规定,如果指针变量p已指向数组中的一个元素,则p+1指向同一个数组中的下一个元素,而不是将p的值(地址)简单的加1. 如果p的初值为&a[0],则 (1)

黑马程序员---C基础12【结构体数组】【结构体指针】【结构体嵌套】【作为函数参数】【枚举类型】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [结构体数组] 1.结构体数组: 结构体数组的每一个元素都是具有相同结构类型的下标结构变量:(可以表示一个群体,一个班学生档案) 2.结构数组定义: 定义格式: struct    结构名{ 成员列表: }数组名[数组长度]: 1 1)定义结构体的同时定义数组: 2 3 struct stu{ 4 5 int num; 6 7 char name[10]; 8 9 int age; 10 11

你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题

一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: int nums[] = {11,22,33,44,55,66}; int i; // sizeof(nums) 计算nums数组的总字节数 // sizeof(int) 计算int类型所占用的字节数 int length = sizeof(nums)/sizeof(int); for(i=0;i<length;i++)